#include<iostream>
using namespace std;
class Model
{
private:
int val;
public:
Model(int n = 0) :val(n) {}
Model(const Model& obj) {
val = 2*obj.val;
}
Model& operator=(const Model& obj) {
val = 4 * obj.val;
return *this;
}
void print() {
cout << val << endl;
}
};
int main() {
Model obj1(10), obj2 = obj1, obj3;
obj3 = obj1;
obj2.print();
obj3.print();
return 0;
}
輸出結果:
竟然是:
20
40
而不是:
40
40
原因:對Model obj1(10), obj2 = obj1, obj3;
中等號運算符的認知不正確,此處竟然執行了拷貝構造,而不是等號的重載運算