说一下有关c++运算符的重载

来源:互联网 发布:三十岁的女人 知乎 编辑:程序博客网 时间:2024/04/29 02:17


//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;   
}