1一个对象调用另一个对象时候调用拷贝构造函数 源代码:#include<iostream> using namespace std; class Point{ private: int x,y; public: Point(int x,int y){this->x=x;this->y=y;} Point(Point& p){ this->x=p.x; this->y=p.y; cout<<"拷贝构造函数被调用!"<<endl; } int Getx(){return x;} int Gety(){return y;} }; int main(){ Point A(1,2); Point B(A); cout<<B.Gety()<<endl; } ![]() 2当函数的参数是一个类 类型时 调用拷贝构造函数 源代码2: #include<iostream> using namespace std; class Point{ private: int x,y; public: Point(int x,int y){this->x=x;this->y=y;} Point(Point& p){ this->x=p.x; this->y=p.y; cout<<"拷贝构造函数被调用!"<<endl; } int Getx(){return x;} int Gety(){return y;} }; int func1(Point p){ cout<<p.Getx()<<endl; } int main(){ Point A(1,2); func1(A); } ![]() 3当函数的返回值类型是类 类型时 调用构造函数 ... #include<iostream> using namespace std; class Point{ private: int x,y; public: Point(int x,int y){this->x=x;this->y=y;} Point(Point& p){//拷贝构造函数 this->x=p.x; this->y=p.y; cout<<"拷贝构造函数被调用!"<<endl; } int Getx(){return x;} int Gety(){return y;} }; int func1(Point p){ cout<<p.Getx()<<endl; } Point func2(){ Point A1(12,23); return A1;//调用拷贝构造函数 } int main(){ Point B=func2(); cout<<B.Getx()<<endl; } |
|