【问题标题】:cpp inheritance some misconceptioncpp继承的一些误解
【发布时间】:2018-09-08 15:23:49
【问题描述】:

这里有一些代码

class A{
 private:
   int a;
 public: 
   void abc()
   { cout << a << endl; }
};
class B : public A
{ };

main() {
 B obj;
 obj.abc(); // it works but why? obj.abc is printing a which should not inherit to class B because it is private.

好的,所以派生类从基类继承了一个公共函数 abc(),并且该函数试图输出一个不属于派生类的成员变量 a,因为它在基类中是私有的?那么它是如何做到的。这段代码打印出...但是如何打印?

【问题讨论】:

  • 基类的私有成员派生类的成员。它们不容易从派生类中访问,但不会消失。

标签: c++ inheritance private member public


【解决方案1】:

aprivateclass A,但由于abc 定义在class A 中,abc 可以使用a

B 可以使用abc,因为abcpublic 并且B 派生自A(公开)。

a 不适用于B 中定义的函数。

【讨论】:

    猜你喜欢
    • 2020-03-23
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    • 2021-08-24
    • 2019-11-07
    • 2021-06-30
    • 2014-10-25
    • 2013-07-23
    相关资源
    最近更新 更多