c++中公共继承、私有继承和受保护继承之间的区别是什么?
我在SO上找到的所有问题都是针对具体案例的。
c++中公共继承、私有继承和受保护继承之间的区别是什么?
我在SO上找到的所有问题都是针对具体案例的。
当前回答
它本质上是派生类中基类的公共和受保护成员的访问保护。通过公共继承,派生类可以看到基类的公共成员和受保护成员。而私有继承则不能。使用protected,派生类及其派生的任何类都可以看到它们。
其他回答
私人:
基类的私有成员只能被该基类的成员访问。
公众:
基类的公共成员可以被该基类的成员、其派生类的成员以及基类和派生类之外的成员访问。
保护:
基类的成员可以访问基类的受保护成员,也可以访问其派生类的成员。
简而言之:
私人:基地
Protected:基础+派生
Public: base + derived +任何其他成员
1)公共继承:
a.基类的私有成员在派生类中不可访问。
b.基类的受保护成员在派生类中仍然受保护。
c.基类的公共成员在派生类中保持为公共。
因此,其他类可以通过派生类对象使用基类的公共成员。
2)受保护遗产:
a.基类的私有成员在派生类中不可访问。
b.基类的受保护成员在派生类中仍然受保护。
c.基类的公共成员也成为派生类的受保护成员。
因此,其他类不能通过派生类对象使用基类的公共成员;但它们可用于派生的子类。
3)私人继承:
a.基类的私有成员在派生类中不可访问。
b.基类的Protected & public成员变成派生类的private成员。
因此,基类的成员不能被其他类通过派生类对象访问,因为它们在派生类中是私有的。甚至是Derived的子类 类不能访问它们。
class A
{
public:
int x;
protected:
int y;
private:
int z;
};
class B : public A
{
// x is public
// y is protected
// z is not accessible from B
};
class C : protected A
{
// x is protected
// y is protected
// z is not accessible from C
};
class D : private A // 'private' is default for classes
{
// x is private
// y is private
// z is not accessible from D
};
重要提示:类B, C和D都包含变量x, y和z。这只是访问的问题。
关于受保护继承和私有继承的使用,你可以在这里阅读。
任何继承自您的类的类都可以访问受保护的数据成员。但是,私有数据成员不能。假设我们有以下内容:
class MyClass {
private:
int myPrivateMember; // lol
protected:
int myProtectedMember;
};
从扩展到这个类,引用这个。myPrivateMember不能工作。然而,这。myProtectedMember意志。这个值仍然是封装的,所以如果我们有一个myObj类的实例化,那么myObj。myProtectedMember不能工作,所以它的功能类似于私有数据成员。
为了回答这个问题,我想先用我自己的话描述一下成员的访问器。如果你已经知道这一点,那就跳到标题“下一步:”。
我知道有三种访问器:公共的、受保护的和私有的。
Let:
class Base {
public:
int publicMember;
protected:
int protectedMember;
private:
int privateMember;
};
所有知道Base的都知道Base包含publicMember。 只有子节点(及其子节点)知道Base包含protectedMember。 除了Base,没有人知道privateMember。
“意识到”,我的意思是“承认存在,从而能够获得”。
下一个:
同样的情况也发生在公共、私有和受保护的继承上。让我们考虑一个类Base和一个继承自Base的类Child。
如果继承是公共的,那么所有知道Base和Child的东西也知道Child从Base继承。 如果继承是受保护的,那么只有Child及其子元素知道它们从Base继承。 如果继承是私有的,那么除了Child之外没有人知道继承。