如何通过派生类访问基类的受保护成员?

肖恩·蔡(Sean Tsai)

我正在尝试几个有关继承的程序,结果发现以下内容引起了错误,但我并不真正了解其原理。

#include <iostream>

using namespace std;

class Base {
protected:
    int x = 0;
};

class Derived: public Base {

    // OK: access protected member via this
    void g() { cout<<x; } 

    // OK: access protected member of other Derived
    void h(Derived& d) { cout<<d.x; } 

    // FAIL: access Base class's protected member, why?
    void f(Base& b) { cout<<b.x; } 
};

int main() {}

我希望派生类可以访问基类的公共或受保护的数据成员和成员函数。

但是它没有按照我的想法工作,有人可以帮我照亮我的概念吗?

maximum_prime_is_463035818

没有比您已经发现的更多的东西了。派生实例可以访问其受保护成员以及其他派生实例的成员,但不能访问基类实例的成员。为什么?因为那就是protected定义的方式。

有关更多详细信息,请参考cppreference(强调我的观点):

Base类的受保护成员只能访问

1)由基地的成员和朋友

2)由从Base派生的任何类的成员和朋友(直到C ++ 17),但仅当对从Base(包括此)派生的类型的对象进行操作时

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从派生类访问基类中的受保护成员

来自分类Dev

从派生类访问基类中的受保护成员

来自分类Dev

我如何从另一个类的基类访问派生类中的受保护成员

来自分类Dev

使用CRTP访问派生类的受保护成员

来自分类Dev

C ++:无法从派生类访问受保护的成员

来自分类Dev

无法访问派生类中的受保护成员

来自分类Dev

受保护的成员无法在派生类中访问?

来自分类Dev

访问派生类 C++ 中的受保护成员

来自分类Dev

从派生类访问受保护的方法

来自分类Dev

在派生类中访问基类受保护的数据成员向量会给出错误139

来自分类Dev

可以通过以下方法在派生类中初始化受保护的基类成员:

来自分类Dev

派生类不能使用成员指针指向受保护的基类成员

来自分类Dev

如何访问超类的受保护成员到其派生类。如果在派生类中已经声明了同名的函数?

来自分类Dev

如何通过类型为base的指针访问派生类中的成员,但指向派生类

来自分类Dev

派生类无法访问基类的受保护方法

来自分类Dev

关于受保护的成员函数和派生类访问的困惑

来自分类Dev

派生类中受保护的成员函数地址不可访问

来自分类Dev

通过CRTP通过基类引用访问派生类的constexpr成员变量

来自分类Dev

基类VS中的单个受保护成员变量派生类中的多个私有成员变量

来自分类Dev

从基类的指针访问派生类的成员

来自分类Dev

从基类指针访问派生类成员

来自分类Dev

从基类指针访问派生类成员

来自分类Dev

通过运行时索引访问派生类中基类的成员

来自分类Dev

受保护的函数无法在派生类中访问

来自分类Dev

如何使用多态从基类访问派生类向量成员?

来自分类Dev

如何使用多态性从基类访问派生类向量成员?

来自分类Dev

基类的好友类如何通过从基类派生的类的对象访问该基类的成员?

来自分类Dev

如何从C ++中的基类访问派生类的属性?

来自分类Dev

从基类的派生类访问属性

Related 相关文章

  1. 1

    从派生类访问基类中的受保护成员

  2. 2

    从派生类访问基类中的受保护成员

  3. 3

    我如何从另一个类的基类访问派生类中的受保护成员

  4. 4

    使用CRTP访问派生类的受保护成员

  5. 5

    C ++:无法从派生类访问受保护的成员

  6. 6

    无法访问派生类中的受保护成员

  7. 7

    受保护的成员无法在派生类中访问?

  8. 8

    访问派生类 C++ 中的受保护成员

  9. 9

    从派生类访问受保护的方法

  10. 10

    在派生类中访问基类受保护的数据成员向量会给出错误139

  11. 11

    可以通过以下方法在派生类中初始化受保护的基类成员:

  12. 12

    派生类不能使用成员指针指向受保护的基类成员

  13. 13

    如何访问超类的受保护成员到其派生类。如果在派生类中已经声明了同名的函数?

  14. 14

    如何通过类型为base的指针访问派生类中的成员,但指向派生类

  15. 15

    派生类无法访问基类的受保护方法

  16. 16

    关于受保护的成员函数和派生类访问的困惑

  17. 17

    派生类中受保护的成员函数地址不可访问

  18. 18

    通过CRTP通过基类引用访问派生类的constexpr成员变量

  19. 19

    基类VS中的单个受保护成员变量派生类中的多个私有成员变量

  20. 20

    从基类的指针访问派生类的成员

  21. 21

    从基类指针访问派生类成员

  22. 22

    从基类指针访问派生类成员

  23. 23

    通过运行时索引访问派生类中基类的成员

  24. 24

    受保护的函数无法在派生类中访问

  25. 25

    如何使用多态从基类访问派生类向量成员?

  26. 26

    如何使用多态性从基类访问派生类向量成员?

  27. 27

    基类的好友类如何通过从基类派生的类的对象访问该基类的成员?

  28. 28

    如何从C ++中的基类访问派生类的属性?

  29. 29

    从基类的派生类访问属性

热门标签

归档