摘自:http://www.2cto.com/kf/201211/166530.html
#include <iostream> using namespace std; class Fraction{ private: int fenmu; //分母 int fenzi; //分子 public: Fraction(int x,int y){ fenzi = x; fenmu = y; } Fraction(){} Fraction(const Fraction & fr); Fraction & operator=(Fraction& p); void display(){ cout << fenmu << " " << fenzi; } }; Fraction::Fraction(const Fraction & fr){ cout << "test: use copy" << endl; fenmu = fr.fenmu; fenzi = fr.fenzi; } Fraction & Fraction::operator=(Fraction& fr){ if(this == &fr) return *this; fenmu = fr.fenmu; fenzi = fr.fenzi; cout << "test use =" << endl; return *this; } int main(){ Fraction f(1,2); Fraction f2(f); //use copy //f2.display(); Fraction f3 = f2; // use copy Fraction f4; f4 = f3; // use = //f5.display(); return 0; }
从上面的代码可以看出:
调用拷贝构造函数的时候是
Fraction f2(f); //use copy ,其实等价于 Fraction f3 = f2; // use copy
就像我们其实可以这样子赋值 int a(1) 等价于 int a=1; 可能我们还不够习惯
调用赋值操作运算符
Fraction f4;
f4 = f3; // use =
因为已经实例化f4,所以不可能调用任何的构造函数,所以这个时候只能够调用赋值操作运算符
时间: 2024-12-08 08:51:33