C++ 复制构造函数
本帖最后由 wow7jiao 于 2018-9-17 11:08 编辑#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)--------------------------------------------这个1
{
x = p.x;
y = p.y;
cout << "Calling the copy constructor" << endl;
}
int main()
{
Point a (1, 2);-------------------------------------------------〉请老师指点,这里建立对象a,前面1没有设置初始化的构造函数。为什么也可以将实参值初始化。
//Point b (a);
cout << a.getX() << endl;
return 0;
} 1.拷贝构造函数的参数是Point::Point (const Point &p) 类型的
2.你这里相当于有两个构造函数 Point (int xx = 0, int yy = 0) 和 Point (Point &p),根据函数重载规则
Point a (1, 2) 和 Point b (a) 都可以创建一个对象
{:5_102:} Point a (1, 2); 这个是通过括号里的1,2两个参数来初始化a,很明显要调用有参构造函数来初始化;
point b(a); 用一个对象a去初始化另一个新定义的对象b,这个肯定要调拷贝构造函数呗,
还有这种情况 Point b = a; C++编译去也会调用拷贝构造函数通过a去初始化b;
这是拷贝构造函数的简单应用场景,还有对象在从实参传给形参的时候,和调用返回类对象的函数的时候也会调用拷构造函数。
页:
[1]