対私は一例としてこれを取る、ここでの違いを確認したい:私の例ではコンストラクタは、新しい
class Gate
{
public:
Gate(); //Constructor
void some_fun();
private:
int one, two;
ptr p1;
Gate* next;
};
typedef Gate* ptr;
Gate::Gate()
{
one = 0;
two = 0;
}
void Gate::some_fun()
{
p1 = new Gate;
p1 = p1->next;
p1 = new Gate();
}
を、私は「門」の2つの新しいノードを作成していると、それらの間の唯一の違いはあります最初のノードには変数「1と2」が初期化されておらず、2番目のノードは初期化されています。
デフォルトのコンストラクタが明示的に定義されているクラスに対して、 'new T 'と' new T() 'に違いはありません。そのコンストラクタはどちらの場合でも実行されます。 –
@Josh、実際にこのコードを実行して結果を確認しましたか? – crashmstr
あなたの 'some_func()'は 'Gate'オブジェクトをリークします。 – jrok