#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(){
としてクラスBが私的にクラスAを継承している、このアップキャストが動作するようになっていません。明示的な型キャスティングでプライベート継承のアップキャストが許可されるのはなぜですか?
A* a = new B;
しかし、明示的な型キャストがそれを許可されています。 なぜですか?
A* a1 = (A*)new B;
a1->f();
return 0;
}
c-castはほとんどの変換を可能にします( 'int *'から 'A *'への変換も可能です)。使用法は、期待される出力を持つUBかもしれません。 – Jarod42
重複:http://stackoverflow.com/questions/17925124/can-i-cast-a-derived-class-to-a-private-base-class-c –