每个类至少有两个构造函数:1、默认构造函数
2、拷贝构造函数。在下面情况下,系统将自动调用拷贝构造函数;
1>通过声明初始化来复制对象时。
2>对象按值传递给函数时。
3>从函数按值返回一个对象时。
请看下面代码:
- #include <iostream>
- using namespace std;
- class Ratio{
- public:
- Ratio(int n=0,int d=1):num(n),den(d){}
- Ratio (const Ratio &r):num(r.num),den(r.den){
- cout<<"COPY CONSTRUCTOR CALLED/n";
- }
- private:
- int num,den;
- };
- Ratio f(Ratio r){
- Ratio s=r;//声明s时调用,将r复制到s;
- return s;
- }
- int main(){
- Ratio x(22,7);
- Ratio y(x);//当声明y时调用,把x复制到y;
- f(y);//y按值传递给函数f时调用,把y复制到r;
- system("pause");
- }
输出结果为:COPY CONSTRUCTOR CALLED
COPY CONSTRUCTOR CALLED
COPY CONSTRUCTOR CALLED