1

次のような問題について調査しています。

struct A { ... }
struct B : A { int more; }

void Method(A a) { ... }

これは次のように機能します: B のインスタンスをメソッドに渡すと、本体でmoreフィールドにアクセスできなくなりますか?

これの名前を思い出そうとしましたが、思い出せません。Google で検索しても、他に何も得られません。

もっと研究を続けることができるように、誰か私に名前を付けてもらえますか?

4

1 に答える 1

3

実際にあなたが話しているのはスライスだと思います。基本型の引数を介して値によって何らかの派生型の C++ オブジェクトを渡すと、派生部分が「切り取られ」、派生型にキャストしてもアクセスできなくなります。

この問題の解決策は、参照引数を使用することです。つまり、

void Method(A &a) { ... }

次に、パーツBを破棄することなく、この関数にオブジェクトを渡すことができます。B

于 2012-05-09T04:46:02.480 に答える