C++の親クラスポインタはどのようにして子クラスオブジェクトを指すのですか?

C++の親クラスポインタが子クラスオブジェクトを指すようにするには、アップキャストを使用できます。アップキャストとは、子クラスのオブジェクトを親クラスのポインタや参照に代入することで、親クラスのポインタが子クラスのオブジェクトを指せるようになることをいいます。

サンプルコードは以下のとおりです。

class Parent {
public:
    virtual void print() {
        cout << "This is the parent class." << endl;
    }
};

class Child : public Parent {
public:
    void print() override {
        cout << "This is the child class." << endl;
    }
};

int main() {
    Child childObj;
    Parent* parentPtr = &childObj; // 使用父类指针指向子类对象
    parentPtr->print(); // 调用的是子类的print函数

    return 0;
}

上述の例では、親クラス Parent と、親クラスを継承した子クラス Child を定義しました。main 関数の中で、Child クラスのオブジェクト childObj を作成し、親クラスのポインタ parentPtr を使用して childObj オブジェクトを指し示しました。そして、parentPtr を通じて print 関数を呼び出すと、実際には子クラス Child の print 関数が呼び出されます。このように、親クラスのポインタを介して子クラスのオブジェクトを指し示すことができます。

bannerAds