//1。
//定义在类operation中,运算符需要定义为friend型才可以访问保护区中的变量
//以下的例子是一个重载适合复数的计算
class complex
{
public:
complex( int real, int image );
virtual ~complex();
friend complex operator + ( complex& c1, complex& c2 );
//使用friend声明为友元,采用第一种定义方法
//使用complex& operator + ( complex&b c1 );,采用第二种定义方法
complex& operator = ( complex& c );
//有关赋值运算符的重载实现,见2。
protected:
int m_real;
int m_image;
char *pName;
};
//第一种定义方法,声明为友元的可以访问保护区中的数据,注意友元函数不属于类,是
//类的好朋友 ^_^ 另外在这里使用c++的重载加减乘除运算时使用双参数,比单参数要好些
//双参数可以不用改变当前对象中的数据,即(this),这样可以达到多次计算的目的
complex operator + ( complex& c1, complex& c2 )
{
}
//第二中定义方法,需要访问保护区中的数据,需要定义为类中的函数
complex& complex::operator + ( complex& c1 )
{
m_real += c1.m_real;
m_image += c1.m_image;
return * this;
}
//2。
//当重载赋值运算符"="的时候,需要注意,堆中的数据需要及时的释放
complex& complex::operator = ( complex& c )
{
delete pName;//当变量是来自堆区的,应该释放后再赋值
strcpy( pName, c.pName );
return * this;
}