友元函数:解决从外部函数访问类的内部私有或保护数据。
模板友元函数:需要注意在定义中需要加上完整申明。
#include <iostream>using namespace std;
template <typename T>class Complex
{
protected:
T real, imag;
public:
Complex(T real_init, T imag_init) : real(real_init), imag(imag_init) {}
public:
template <typename U> friend U get_real(Complex<U>& c); //不能缺少,否则不能编译通过
template <typename U> friend U get_imag(Complex<U>& c);
};
template <typename U>U get_real(Complex<U>& c)
{ return c.real;}
template <typename U>U get_imag(Complex<U>& c)
{ return c.imag;}
int main()
{
Complex<int> a(1, 2);
cout<< get_real(a) <<endl;
cout<< get_imag(a) <<endl;
}
本文深入探讨了友元函数的概念及其在访问类内部私有或保护数据中的应用,同时介绍了模板友元函数的使用方法和注意事项。通过实例展示了如何在C++中实现并使用这些特性。
3530

被折叠的 条评论
为什么被折叠?



