C++操作符重载
2021-04-02 06:27
标签:返回 font amp 结果 out 支持 operator c++ 不同 C++操作符重载 标签:返回 font amp 结果 out 支持 operator c++ 不同 原文地址:https://www.cnblogs.com/happybirthdaytoyou/p/13496428.html/******** 操作符重载
***
*** 下面三种方式,都支持连续加操作,但是稍有不同,你知道哪里不同吗
***
******/
/** Test1
*****/
#if 0
class Calculate
{
int a;
public:
Calculate(void) : a(0)
{
cout a + obj.a;
cout a + obj.a;
cout 实测结论: 第二个打印块内: Test2 会比Test1的多执行两个构造函数,即Calculate(int val)。
原因: Test2: obj3 = obj0 + obj1 + obj2 这句代码,先执行obj0 + obj1,会生成一个临时对象(假设称为X),其类型为返回值Calculate类型,
同时实际返回的是int类型,这就触发了只带一个int参数的构造函数的执行。
之后继续执行X + obj2 ,
同理,会生成一个临时对象Y,先执行完Y的重载+的重载函数后,后调用Y的只带一个int参数的构造函数的执行,然后将Y赋值给obj3.
**/
#if 0
/**** Test3
*****/
class Calculate
{
int a;
public:
Calculate(void) : a(0)
{
cout a += obj.a;
cout