您的位置:首页 > 编程语言 > C语言/C++

C++中类成员访问权限的警醒

2011-03-23 15:26 295 查看
虽然用C++已经有上一段时间了,但是因为练习的不够多,导致自己在很多概念的理解上都有偏差。这样的例子今天又增加了一个,特此记录,警醒自己。

C++的类中的成员有三种不同的访问权限,控制外界对其成员的访问,分别是public、private、protected。
一般来说,位于private当中的成员外界无法访问,哪怕是继承自父类的子类,也不可能轻易地访问到父类的private成员。
但是今天注意到一个例外。那就是当本类的成员函数所接受的参数为同类对象时,该成员函数内部可以直接访问参数对象的私有成员。
比如说:
class A
{
private:
int a;
public:
void tt(A b);
};

void A::tt(A b)
{
b.a++;
}

上述代码的tt()函数是A的成员函数,a是A的私有成员,但传入给A的b对象的私有成员却是可以直接在tt函数当中使用的。如果参数是同类对象的引用、指针,情况也完全相同。这个可能为了方便类似拷贝构造函数而实现的一个小“缺口”。简而言之,类成员的权限是在类与类之间建立的关系,而不是对象与对象之间。
不过如果自己是一个子类,而父类作为参数传入的时候,父类的私有成员不能享受这样的偷渡待遇。

今天第一次真正注意到,警惕一下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: