混迹于C++ 之运算符重载

示例:常规的重载:

#include
using namespace std;
class Complex
{
public:
  Complex();//构造函数//没有初始化
  Complex(double r,double i);
  //进行初始化,初始化的参数赋值给private数据成员
  
  Complex complex_add(Complex &d);//实现加法的方法
  void print();
private:
  double real;
  double imag;
};
/*类的成员函数,也可以直接写入类里面,但为了代码的可读性,
 * 写在外面,用::引用。如果只有一行简易的代码可以考虑
 * 写入类里面。
 */
Complex::Complex()
{
  real=0;
  imag=0;
}
Complex::Complex(double r,double i)
{
  real=r;
  imag=i;
}
Complex Complex::complex_add(Complex &d)
/*注意上处容易错误写成Complex Complex_add(Complex &d)
 *提示error: ‘double Complex::real’ is private
 *::为引用运算符
 *第一个Complex为函数类型。
 */
{
  Complex c;
  c.real=real+d.real;
  c.imag=real+d.imag;
  return c;
}
void Complex::print()
{
  cout<< "(" << real << "," << imag << "i)\n"<运算符重载

#include
using namespace std;
class Complex
{
public:
  Complex();//构造函数//没有初始化
  Complex(double r,double i);
  //进行初始化,初始化的参数赋值给private数据成员
  
  Complex operator+(Complex &d);//实现加法的方法
  void print();
private:
  double real;
  double imag;
};
/*类的成员函数,也可以直接写入类里面,但为了代码的可读性,
 * 写在外面,用::引用。如果只有一行简易的代码可以考虑
 * 写入类里面。
 */
Complex::Complex()
{
  real=0;
  imag=0;
}
Complex::Complex(double r,double i)
{
  real=r;
  imag=i;
}
Complex Complex::operator+(Complex &d)
/*注意上处容易错误写成Complex Complex_add(Complex &d)
 *提示error: ‘double Complex::real’ is private
 *::为引用运算符
 *第一个Complex为函数类型。
 */
{
//  Complex c;
//  c.real=real+d.real;
//  c.imag=real+d.imag;
//  return c;
    return Complex(real+d.real,real+d.imag);
}
void Complex::print()
{
  cout<< "(" << real << "," << imag << "i)\n"<

你可能感兴趣的:(C++)