C++ - 基类,派生类同名成员与访问范围

基类和派生类有同名成员的情况

//base
class base{
      int j;
    public:
      int i;
      void func();
};
//派生类
class derived:public base{
    public:
        int i;
        void access();
        void func();
};
void derived::access(){
    j = 5;//error
    i = 5;//引用的是派生类的 i
    base::i = 5;//引用的是基类的 i
    func();//派生类的
    base::func();//基类的
}
derived obj;
obj.i = 1;
obj.base::i = 1;

对象占用的存储空间.png

Note:一般来说,基类和派生类不定义同名成员变量。

访问范围说明符

  • 基类的 private 成员:
    • 基类的成员函数
    • 基类的友员函数
  • 基类的 public 成员:
    • 基类的成员函数
    • 基类的友员函数
    • 派生类的成员函数
    • 派生类的友员函数
    • 其他的函数
  • 基类的 protected 成员:
    • 基类的成员函数
    • 基类的友员函数
    • 派生类的成员或者友元只能通过派生类的对象来访问基类的 protected 成员,而不能通过基类直接访问。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容