Class Cents(){
int m_val;
public:
Cents(int x=0){ cout<<"Constructor";}
Cents(const Cents& src){ cout<<"Copy constructor"}
Cents Add(int val){m_val=val; return *this} // --->(1)
}
假设我有Cents object obj
并且正在打电话obj.Add()
现在输出将是
构造函数
复制构造函数
所以我的假设是在这里通过返回*this
(1) 我们将*this
对象值复制到一个新的临时 Cents 对象。这就是调用复制构造函数的原因。
现在,如果我将第 (1) 行替换为
Cents Add(int val){ Cents temp;return temp;} // --->(2)
唯一的输出是
构造函数
为什么不调用复制构造函数?我对第 (1) 行的假设是错误的吗?