小编Dbl*_*e47的帖子

为什么显式类型转换允许向上转换私有继承?

#include<iostream>
using namespace std;

class A {
    public:
    void f(){cout<<"A"<<endl;}
};

class B : private A {
    public:
    void f(){cout<<"B"<<endl;}
};

int main (){
Run Code Online (Sandbox Code Playgroud)

由于B类私下继承A类,因此这种向上转换不应该起作用:

    A* a = new B;
Run Code Online (Sandbox Code Playgroud)

但明确的类型转换允许它.为什么?

    A* a1 = (A*)new B;
    a1->f();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++

25
推荐指数
3
解决办法
1463
查看次数

标签 统计

c++ ×1