2016-05-01 22 views
1

私は構造体がdiffentの方法で初期化されているいくつかのコードを参照しながら、私はC++をlearingています、例えば C++構造体の初期化方法

typedef struct Node { 
     Node *p; 
     Node *n; 
     int data; 
    }Node; 

何これら二つの方法の違いがある、またはその両方が同じである、

Node* root = new Node(); 

Node* root = new Node; 

事前に感謝します!

+2

C++では、 'typedef'を使用せず、閉じたブレースの後に' Node'をスキップしてください。 –

+0

@FrankPuffer提案された構文の理由を知ることができます。 –

+2

Cの構文を使用しています。 C++では 'struct 'は' class'と同じですが、デフォルトではすべての要素がpublicになっています。したがって、 'class'と同じ方法で' struct'を宣言する必要があります。 –

答えて

1

全く違いはありません。

はさらに、現代のC++で第三の選択肢があまりにもそこだし、これは今の好適な構文は次のとおりです。この場合は

Node* root = new Node{}; 

、すべての3つの構文が有効です。 C++をさらに進めていくうちに、これらの代替構文のいくつかがどのような状況で使用できるかどうかを知ることができます。

+2

実際には違いがあります。重複した状態として。 – StoryTeller

+0

私は値を印刷しようとしましたが、異なる値で初期化されています。 –

関連する問題