当前位置: 移动技术网 > IT编程>开发语言>C/C++ > c/c++ 重载运算符的思考

c/c++ 重载运算符的思考

2018年08月19日  | 移动技术网IT编程  | 我要评论

魂断秦淮主题曲,重生孔宣,玉林一中

c/c++ 重载运算符的思考

#include <iostream>
using namespace std;

class imaginary{

public:
  imaginary():real(0), imag(0){
    cout << "c:" << this << endl;
  }
  imaginary(int real, int imag):real(real), imag(imag){
    cout << "c:" << this << endl;
  }
  imaginary operator+ (const imaginary &m){
    return imaginary (real + m.real, imag + m.imag);
  }
  ~imaginary(){
    cout << this << endl;
  }
private:
  int real;
  int imag;
};

int main(){
  imaginary m1(10, 20);
  imaginary m2(1, 2);
  imaginary m3;
  printf("m3 : %p\n",&m3);
  m3 = m1 + m2;
  cout << 1 << endl;

  return 0;
}

执行结果:

分析:执行m3 = m1 + m2的时点,因为m3的空间已经创建过了,所以立即释放了operator+中创建的对象,打印了1出来,最后才释放了其余3个对象。

如果代码改成:imaginary m3 = m1 + m2; 因为m3还没有被创建过,所以不释放operator+中创建的对象。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网