#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++ ×1