在C++中,有三种继承方式:公有继承(public inheritance)、保护继承(protected inheritance)和私有继承(private inheritance)。这些继承方式决定了派生类如何继承基类的成员和访问权限。
公有继承(public inheritance):
公有继承是最常见的继承方式。
派生类继承了基类的公有成员和保护成员作为它自己的公有和保护成员,但不继承基类的私有成员。
公有继承中,基类的公有成员在派生类中仍然是公有的,可以通过派生类的对象访问。
基类的保护成员在派生类中变成了保护的,只能在派生类内部或者派生类的友元函数中访问。
cpp
class Base {
public:
int publicMember;
protected:
int protectedMember;
private:
int privateMember;
};
class Derived : public Base {
// publicMember在Derived中仍然是公有的
// protectedMember在Derived中变成了保护的
// privateMember在Derived中无法访问
};
保护继承(protected inheritance):
保护继承继承了基类的公有和保护成员作为它自己的保护成员,但不继承基类的私有成员。
在保护继承中,基类的公有成员在派生类中变成了保护的,只能在派生类内部或者派生类的友元函数中访问。
基类的保护成员也在派生类中变成了保护的。
cpp
class Base {
public:
int publicMember;
protected:
int protectedMember;
private:
int privateMember;
};
class Derived : protected Base {
// publicMember在Derived中变成了保护的
// protectedMember在Derived中也是保护的
// privateMember在Derived中无法访问
};
私有继承(private inheritance):
私有继承继承了基类的公有和保护成员作为它自己的私有成员,但不继承基类的私有成员。
在私有继承中,基类的所有成员在派生类中都变成了私有的,只能在派生类内部访问,不能在外部访问。
cpp
class Base {
public:
int publicMember;
protected:
int protectedMember;
private:
int privateMember;
};
class Derived : private Base {
// publicMember在Derived中变成了私有的
// protectedMember在Derived中也是私有的
// privateMember在Derived中无法访问
};