面试题答案
一键面试- 默认继承方式:
- 在C++中,使用
class
进行继承时,默认的继承方式是私有继承(private
)。 - 使用
struct
进行继承时,默认的继承方式是公有继承(public
)。
- 在C++中,使用
- 对基类成员访问权限的影响:
- 公有继承(
public
):基类的公有成员在派生类中仍然是公有成员,基类的保护成员在派生类中仍然是保护成员。例如:
- 公有继承(
struct Base {
public:
int publicMember;
protected:
int protectedMember;
};
struct Derived : public Base {
void accessMembers() {
publicMember = 10;
protectedMember = 20;
}
};
- 私有继承(
private
):基类的公有成员和保护成员在派生类中都变成私有成员。例如:
class Base {
public:
int publicMember;
protected:
int protectedMember;
};
class Derived : Base { // 默认为private继承
void accessMembers() {
publicMember = 10;
protectedMember = 20;
}
};
- 保护继承(
protected
,这里仅为完整说明,不是默认方式):基类的公有成员在派生类中变成保护成员,基类的保护成员在派生类中仍然是保护成员。例如:
class Base {
public:
int publicMember;
protected:
int protectedMember;
};
class Derived : protected Base {
void accessMembers() {
publicMember = 10;
protectedMember = 20;
}
};
在以上代码示例中,accessMembers
函数可以访问基类中相应访问权限的成员,体现了不同继承方式对基类成员在派生类中访问权限的影响。需要注意的是,通过Derived
类的对象,在类外部只能访问Derived
类从Base
类以public
继承过来的public
成员(如果有的话)。例如:
int main() {
Derived d;
// d.publicMember = 30; // 若Derived是private或protected继承自Base,此行编译错误
return 0;
}