面试题答案
一键面试- 访问权限变化:
- 在C++私有继承中,基类的公有成员在派生类中变为私有成员。
- 基类的保护成员在派生类中也变为私有成员。
- 举例说明:
#include <iostream>
// 基类
class Base {
public:
int public_member;
protected:
int protected_member;
private:
int private_member;
};
// 派生类,私有继承
class Derived : private Base {
public:
void accessMembers() {
// 访问变化后的成员
public_member = 10; // 原本基类的公有成员,现在在派生类中是私有成员,可以在派生类内部访问
protected_member = 20; // 原本基类的保护成员,现在在派生类中是私有成员,可以在派生类内部访问
// private_member = 30; // 错误,无法访问基类的私有成员,即使在派生类中
}
};
int main() {
Derived d;
// d.public_member = 5; // 错误,在外部无法访问,因为它在派生类中变为私有成员
// d.protected_member = 5; // 错误,在外部无法访问,因为它在派生类中变为私有成员
d.accessMembers();
return 0;
}
在上述代码中,Derived
类私有继承自Base
类。在Derived
类的成员函数accessMembers
中,可以访问变化后的public_member
和protected_member
,但在main
函数中,无法直接访问public_member
和protected_member
,因为它们在Derived
类中变为了私有成员。