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

虽然用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函数当中使用的。如果参数是同类对象的引用、指针,情况也完全相同。这个可能为了方便类似拷贝构造函数而实现的一个小“缺口”。简而言之,类成员的权限是在类与类之间建立的关系,而不是对象与对象之间。
不过如果自己是一个子类,而父类作为参数传入的时候,父类的私有成员不能享受这样的偷渡待遇。

今天第一次真正注意到,警惕一下。

原文链接: https://www.cnblogs.com/liuyanghejerry/archive/2011/03/23/1992577.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

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

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/22674

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 上午12:41
下一篇 2023年2月8日 上午12:41

相关推荐