#include
using namespace std;
class CPoint
{
public:CPoint(int xx, int yy){x = xx;y = yy;}CPoint(const CPoint &p){x = p.x;y = p.y;}
private:int x, y;
};
首先,我们来看一个例子,在CPoint这个类中定义了两个构造函数,第一个为普通的构造函数,第二个为拷贝构造函数,在拷贝构造函数中通过p.x来访问被引用的对象p的私有数据成员x和y,这个例子可能会让很多人有疑惑,你可能会想为什么拷贝构造函数的参数可以直接去访问它自己的私有成员?那这个例子到底是错的还是对的呢
答案是对的,我们得明白C++的限定符是限定类的,不是限定对象的,只要是类型相同就能相互访问。两个是同类型的,因此可以直接访问,但是需要指定一下是哪个对象。所 谓访问权限(如public,private),是对“类”来说的,不是对“对象”来说的,private访问权限是其它类不能访问,而非这个类的不同对 象不能访问。
结论,拷贝构造函数本来就是用来把两个相同类的对象赋值而已,那么被赋值的对象的类肯定和用来赋值的对象是一个类,所以在拷贝构造函数里面这样用,一点问题也没有!