クラスのオブジェクトを作成するとき、たとえば、
class A {
public: A() {}
};
A a;
コンストラクターだけが呼び出されますか?それとも、new演算子が暗黙的に使用されているのですか?
私たちがしなければならないようにA* b = new A();
また、メモリのどこに保存されますかa?bスタックまたはヒープ?
最初のケースでaは、がグローバル変数でない場合、それはスタックにb置かれ、ヒープに置かれます。
そして最初のケースでは、コンストラクターのみが呼び出されます。new2番目の場合のように明示的に行う場合を除いて、が呼び出されることはありません。
いいえnewは暗黙的に呼び出されません。new作成されたオブジェクトの型へのポインタを返しますが、コンストラクタ呼び出しには戻り型がありません。で作成されたオブジェクトnewはヒープ上に存在します。Newはメモリを割り当ててから、コンストラクタを呼び出します。フォームで作成されたオブジェクトはA a、スタックに存在します(グローバル変数でない限り)。