C++拷贝构造函数以及运算符重载例子 (Linux 下编(4)

c2 = -c3;
Default Constructing real: 0, image: 0 . //调用默认构造函数创建临时对象temp3,值为:0
----- operator -x start -----.                      //开始计算 -c3 ,这个是调用c3的 “-” 求负运算符函数
this->real: 1, this->image: 2 .                  //求负前c3的值为:1+2i
temp.real: -1, temp.image: -2 .               //求负后将其结果保存在临时对象temp3中,temp3的值为:-1-2i
----- operator -x end -----.                      // -c3 计算结束,将temp3返回到调用处
----- operator x = y start -----.                //这里是赋值运算:c2 = temp3; 这里调用c2的“=”,过程同上
other.real: -1, other.image: -2 .
this->real: 2, this->image: 0 .                //赋值前c2的值为:2
other.real: -1, other.image: -2 .
this->real: -1, this->image: -2 .             //赋值后c2的值为:-1-2i
----- operator x = y end -----.
Copy Constructing real: -1, image: -2 . //通过拷贝构造函数创建c2的一个副本返回,c2副本的值为:-1-2i
Destructing real: -1, image: -2 .             //析构c2的副本
Destructing real: -1, image: -2 .             //析构temp3

c3 = c2 - c1;
Default Constructing real: 0, image: 0 . //调用默认构造函数创建临时对象temp4,值为:0
----- operator x - y start -----.                  //开始计算 c2 -c1 ,这个是调用c2的 “-” 减运算符函数
this->real: -1, this->image: -2 .               //c2,通过this指针隐式地将c2传递给c2的“-”减运算符函数
other.real: 4, other.image: 4 .                //c1,将c1传递给c2的“-”减运算符函数
temp.real: -5, temp.image: -6 .              //相减的结果保存在临时对象temp4中,所以temp4值为:-5-6i
----- operator x - y end -----.                  //c2 - c1计算结束,将结果temp4返回调用处
----- operator x = y start -----.                //这里是赋值运算:c3 = temp4; 这里调用c3的“=”,过程同上
other.real: -5, other.image: -6 .
this->real: 1, this->image: 2 .                //赋值前c3的值为:1+2i
other.real: -5, other.image: -6 .
this->real: -5, this->image: -6 .             //赋值后c3的值为:-5-6i
----- operator x = y end -----.
Copy Constructing real: -5, image: -6 . //通过拷贝构造函数创建c3的一个副本返回,c3副本的值为:-5-6i
Destructing real: -5, image: -6 .             //析构c3的副本
Destructing real: -5, image: -6 .             //析构temp4

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwpyfs.html