C++多级继承子类访问“爷爷类”同名成员

多级继承有以下三种:多重继承、虚拟继承、单重继承

这里写图片描述

我们知道,若派生类和基类有同名成员,通过派生类访问基类同名成员要加类限定符(详见派生关系中的重名成员的处理(二义性问题)),那么子类访问爷爷类的时候怎么加呢?

答案其实很简单,一样是加类限定符。不过格式是

<子类对象>.<爷爷类>::<同名成员>

而不是

<子类对象>.<爸爸类>.<爷爷类>::<同名成员>
<子类对象>.<爸爸类>::<爷爷类>::<同名成员>

等等,虽然有时候(多重继承时)会遇到“Error:基类‘ClassA不明确’”这样的问题,但是是可以直接运行的。

如有不会提示错误的方法,劳烦告诉我~

下面贴上多重继承情况下访问“爷爷类”同名成员的代码


#include<iostream>
using namespace std;

class ClassA{
public:
    char data = 'A';
    void print(){ cout << data << endl; }
};

class ClassB :public ClassA{
public:
    char data = 'B';
    void print(){ cout << data << endl; }
};

class ClassC :public ClassA{
public:
    char data = 'C';
    void print(){ cout << data << endl; }
};

class ClassD :public ClassB, public ClassC{
public:
    char data = 'D';
    void print(){ cout << data << endl; }
};

void main(){
    ClassA objA;
    ClassB objB;
    ClassC objC;
    ClassD objD;
    objD.ClassA::print();// 虽提示错误但运行无误
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值