派生クラスの関数に基本クラスオブジェクトを使ってアクセスするにはどうすればよいですか? 私はエラーなしでプログラムをコンパイルして実行しました(vs2010 express edition)。 誰でもこのトピックに関する説明を与えることができますか?クラスアクセスを派生する基本クラス - どのように?
#include <iostream>
using namespace std;
class A {
public:
void f1() { cout << " f1 \n"; }
};
class B : public A{
int x;
public:
void f2(int x) {this->x = x; cout << "f2 " << this->x <<"\n";}
};
int main(int argc, char * argv[])
{
A * aaa = new A(); // created a base instance
B * b = (B *) aaa; // typecasted it to derived class
b->f2(5); // try to access function, which should not be possible (run-time error?)
return 0;
}
- >出力
f2 5 // which concept is supports this output?
ありがとうCoder02、私はC++用のさまざまなキャストキーワードがあることを知っていますが、私はCスタイルの型キャストを行っているとは思わなかった。 返信いただきありがとうございます。それは大きな助けとなっています:) – fadedreamz
これは間違ってはいけません - Cスタイルのキャストは必ずしも悪くないとは限りませんし、C++では未定義の結果をもたらすとは限りません。AはBから継承しないので、 Andersは、これがメモリ内でどのように見えているのか、この場合は結果が定義されていない理由を答えました。 – Coder02