C++にてクラスをダウンキャストした時の挙動について疑問があるので質問いたします
hogeA
{
public:
void funcA(int a);
};
hogeB : public hogeA
{
public:
void funcA(int a, int b){ printf("%d %d",a,b); }
void funcB(){ printf("%d",member); }
int member;
};
{
...
hogeA hogea;
// ダウンキャストしてBのfuncAを呼び出し通る
(hogeB)hogea.funcA(1, 2);
// ダウンキャストしてBのfuncBを呼び出し member表示しようとしてBADACCESS
(hogeB)hogea.funcB();
}
hogeAとして生成しているのでfuncBでアクセスエラーが出るのはわかるのですが
funcAが呼び出せる理由がわかりませんダウンキャストして関数がOKな理由を教えてください

回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。