/*复制构造函数被调用的三种情况:
1.当用类的一个对象去初始化该类的另一个对象时
2.如果函数的形参是类的对象,调用函数时,进行形参和实参结合时
3.如果函数的返回值是类的对象,函数执行完成返回调用者时
*/
#include<iostream>
using namespace std;
class Point
{
public:
Point(int xx = 0, int yy = 0){ //构造函数
x = xx;
y = yy;
}
Point(Point &p); //复制构造函数
int getX(){ return x; }
int getY(){ return y; }
private:
int x, y;
};
Point::Point(Point(&p))
{
x = p.x;
y = p.y;
cout << "Calling the copy constructor" << endl;
}
void f(Point p){
cout << p.getX() << endl;
}
Point g(){
Point a(1, 2);
return a;
}
int main()
{
Point a(1, 2);
Point b(a);
Point c = a; //b和c的初始化都调用复制构造函数,两种写法形式不同,执行操作相同
cout << b.getX() << endl;
cout << "第二种调用方式:" << endl;
f(a);
cout << "第三种调用方式:" << endl;
Point d;
d = g();
return 0;
}
复制构造函数被调用的三种情况
最新推荐文章于 2022-04-05 09:51:37 发布