关于对象的引用作为参数,可以直接访问私有成员的问题

#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访问权限是其它类不能访问,而非这个类的不同对 象不能访问。

 

       结论,拷贝构造函数本来就是用来把两个相同类的对象赋值而已,那么被赋值的对象的类肯定和用来赋值的对象是一个类,所以在拷贝构造函数里面这样用,一点问题也没有!

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值