类的复制构造函数调用
复制构造函数调用条件:
(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; }
输出: