私の C++ 教科書では、次のコードが表示されます。
B * pointerToB = new B();
A * pointerToA = pointerToB();
私はポインターに精通していますが、私を混乱させているのは、2 行目の最後の括弧です。私はそれがこのように行われるのを見たことがありません。私はもっと次のようなものを期待していました:
A * pointerToA = &(*pointerToB);
説明を求めて教科書を精査しましたが、不十分でした。最終的に、私はそれを結論付けました
A * pointerToA = pointerToB(); // is synonymous with
A * pointerToA = &(*pointerToB); // this line
クラス A と B の実装は次のとおりです。
class A {
public:
A (): dataOne(2){}
virtual void whoAmI(){printf("class A");}
private:
int dataOne;
};
class B : public A {
public:
B (): dataOne(4){}
virtual void whoAmI(){printf("class B");}
private:
int dataTwo;
};
私の推論は正しいですか?