要访问同一类的另一个对象的受保护属性,可以使用友元类或者提供一个公共的访问方法。
在面向对象编程中,有时需要限制对某些属性的访问,同时允许其他对象访问其他属性。这可以通过将属性声明为私有或受保护来实现。私有属性只能在类的内部访问,而受保护的属性可以在类的内部和子类中访问。
如果需要访问同一类的另一个对象的受保护属性,可以使用友元类或者提供一个公共的访问方法。
友元类是一种特殊的类,它可以访问另一个类的私有或受保护的属性和方法。要声明一个类为友元类,可以在类定义中使用 friend
关键字,如下所示:
class MyClass {
friend class MyFriendClass;
protected:
int myProtectedVar;
};
class MyFriendClass {
public:
void accessProtectedVar(MyClass obj) {
// 可以访问 MyClass 的受保护属性
int val = obj.myProtectedVar;
}
};
在上面的例子中,MyFriendClass
是 MyClass
的友元类,因此它可以访问 MyClass
的受保护属性。
另一种方法是提供一个公共的访问方法。这种方法需要在类中定义一个公共方法,该方法返回受保护属性的值。例如:
class MyClass {
protected:
int myProtectedVar;
public:
int getProtectedVar() {
return myProtectedVar;
}
};
在上面的例子中,getProtectedVar()
方法是公共的,因此可以在类的外部调用它。它返回受保护属性 myProtectedVar
的值,从而允许在类的外部访问该属性。
总之,要访问同一类的另一个对象的受保护属性,可以使用友元类或者提供一个公共的访问方法。
领取专属 10元无门槛券
手把手带您无忧上云