1

私の 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;
};

私の推論は正しいですか?

4

0 に答える 0