C ++の継承とポリモーフィズム

カルロスガビディア-カルデロン

JavaプログラマーでありC ++の初心者である私は、C ++での継承を扱うのに苦労しています。今、私はこれを持っています:

class Parent {
public:
    Parent() {}
    virtual std::string overrideThis() { }
};

class Child : public Parent {
public:
    std::string attribute;
    Child(const std::string& attribute) : attribute(attribute) { }
    std::string overrideThis(){
    std::cout << "I'm in the child" << std::endl;
    return attribute.substr(1, attribute.size()-2);
    }
};

そして、このスニペットはどこか別の場所にあります。

Child *child = new Child(value);
Child childObject = *(child);
std::cout << "I'm trying this: " << childObject.overrideThis() << endl;

上記のコードは期待どおりに機能し、メッセージが画面に出力されます。しかし、その代わりに私がこれを試してみる場合:

Child *child = new Child(value);
Parent childObject = *(child);
std::cout << "I'm trying this: " << childObject.overrideThis() << endl;

画面に面白いキャラクターがたくさんいる面白いランタイムエラーがあります。ポインターでポリモーフィズムを使用する適切な方法は何ですか?私がやろうとしているのは、ChildインスタンスでoverrideThis()を呼び出すことです

ルチアン・グリゴア

呼び出されている関数がParent::overrideThis戻らないため、プログラムの動作は未定義ですが、返されます。

関数Parentため、クラスが呼び出されParent childObject = *(child); 、スライス新しいオブジェクトを、 -あなたがコピーしようとするオブジェクトがchildObject型であるParent、ではありませんChild

ポリモーフィズムが機能するには、ポインターまたは参照のいずれかを使用する必要があります。

Parent* childObject1 = child;
Parent& childObject2 = *child;
childObject1->overrideThis();
childObject2.overrideThis();

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

C ++の継承とポリモーフィズム

分類Dev

C#での継承とポリモーフィズム

分類Dev

C#でのポリモーフィズムと継承の定義

分類Dev

C#ポリモーフィズムとメソッドの継承

分類Dev

C ++の継承とポリモーフィズムを理解する

分類Dev

概念ベースのポリモーフィズムc ++による多重継承

分類Dev

C ++のポリモーフィズムにのみ継承を使用する

分類Dev

共有継承を使用したC ++のポリモーフィズム

分類Dev

C ++インターフェース、継承、ポリモーフィズム

分類Dev

C ++ポリモーフィズム、オーバーロード、継承

分類Dev

C ++マルチレベル継承、ポリモーフィズム

分類Dev

未定義の参照エラーの受信c ++継承/ポリモーフィズム

分類Dev

概念が明示される前のポリモーフィズムと継承のCイディオムは何でしたか?

分類Dev

C#DocumentDbドライバーでポリモーフィズム/継承を使用できますか?

分類Dev

C#ポリモーフィズム-継承されたタイプを指定する

分類Dev

C ++のポリモーフィズム

分類Dev

C ++のポリモーフィズムと私の試験

分類Dev

C ++ RAIIとポリモーフィズムの互換性

分類Dev

c ++-メモリリークとポリモーフィズム

分類Dev

Javaの継承とポリモーフィズム

分類Dev

NSwagの継承とポリモーフィズム

分類Dev

継承とポリモーフィズムの割り当て

分類Dev

Javaの継承とポリモーフィズム

分類Dev

C ++ポリモーフィズムの問題。_vfptrと関係がある

分類Dev

C#でのポリモーフィズムと関連関係

分類Dev

C ++デザインとポリモーフィズム

分類Dev

C#とポリモーフィズム

分類Dev

C ++ unique_ptrとポリモーフィズム

分類Dev

C#での動的ポリモーフィズムの例

Related 関連記事

  1. 1

    C ++の継承とポリモーフィズム

  2. 2

    C#での継承とポリモーフィズム

  3. 3

    C#でのポリモーフィズムと継承の定義

  4. 4

    C#ポリモーフィズムとメソッドの継承

  5. 5

    C ++の継承とポリモーフィズムを理解する

  6. 6

    概念ベースのポリモーフィズムc ++による多重継承

  7. 7

    C ++のポリモーフィズムにのみ継承を使用する

  8. 8

    共有継承を使用したC ++のポリモーフィズム

  9. 9

    C ++インターフェース、継承、ポリモーフィズム

  10. 10

    C ++ポリモーフィズム、オーバーロード、継承

  11. 11

    C ++マルチレベル継承、ポリモーフィズム

  12. 12

    未定義の参照エラーの受信c ++継承/ポリモーフィズム

  13. 13

    概念が明示される前のポリモーフィズムと継承のCイディオムは何でしたか?

  14. 14

    C#DocumentDbドライバーでポリモーフィズム/継承を使用できますか?

  15. 15

    C#ポリモーフィズム-継承されたタイプを指定する

  16. 16

    C ++のポリモーフィズム

  17. 17

    C ++のポリモーフィズムと私の試験

  18. 18

    C ++ RAIIとポリモーフィズムの互換性

  19. 19

    c ++-メモリリークとポリモーフィズム

  20. 20

    Javaの継承とポリモーフィズム

  21. 21

    NSwagの継承とポリモーフィズム

  22. 22

    継承とポリモーフィズムの割り当て

  23. 23

    Javaの継承とポリモーフィズム

  24. 24

    C ++ポリモーフィズムの問題。_vfptrと関係がある

  25. 25

    C#でのポリモーフィズムと関連関係

  26. 26

    C ++デザインとポリモーフィズム

  27. 27

    C#とポリモーフィズム

  28. 28

    C ++ unique_ptrとポリモーフィズム

  29. 29

    C#での動的ポリモーフィズムの例

ホットタグ

アーカイブ