书上说调用复制构造函数有三种情况,但在测试第三种时(如果函数的返回值是类的对象,函数执行完成返回调用者时)发现没有调用复制构造函数,代码如下:
#include
using namespace std;
class Point
{
public:
Point(int x=0,int y=0):x(x),y(y){}
Point(const Point &p)
{
cout << "call copy constructor" << endl;
x = p.x;
y = p.y;
}
int getX() const
{
return x;
}
int getY() const
{
return y;
}
private:
int x;
int y;
};
Point fun()
{
Point a(1,2);
return a;
}
int main(void)
{
Point a = fun();
cout << a.getX() << endl;
return 0;
}