您的位置:首页 > 其它

类的复制构造函数调用

2015-08-11 20:54 274 查看
复制构造函数调用条件:

(1)一个对象以值传递的方式传入函数体

(2)一个对象以值传递的方式从函数体返回

(3)一个对象需要通过另外一个对象进行初始化

#include<stdio.h>
#include<iostream>
#include<stack>
#include<math.h>
#include<string.h>
using namespace std;

class A{
public:
A(){}
A(const A&a){
cout << "copy"<<endl;}
private:
};

A f(A a){
A v(a);
cout<<"1"<<endl;
A b= v;
cout<<"2"<<endl;
return b;
}

class Test
{
public:
int a;
Test(int x)
{
a = x;
}
Test(Test &test)//复制构造函数
{
cout<<"copy constructor"<<endl;
}
};

void fun1(Test test)    //(1)值传递传入函数体
{
cout << "fun1()...." <<endl;
}

void fun2()             //(2)值传递从函数体返回
{
Test t(2);
cout << "fun2()...." <<endl;
return t;
}

int main(){
A x;
A y;
cout<<"==========="<<endl;
A d=f(y);
cout<<"==========="<<endl;
f(y);
cout<<"==========="<<endl;
A c=f(f(x));
cout<<"==========="<<endl;
Test t1(1);
Test t2 = t1;       //(3)用t1对t2做初始化
cout << "before fun1()...." <<endl;
fun1(t1);

Test t3 = fun2();
cout << "before fun2()...." <<endl;

return 0;
}


输出:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: