2016-10-25 4 views

答えて

4

でこれらのゼロを理解していない、それは次のようになります。

LinkedListNode* toSort = new LinkedListNode(nullptr, nullptr, nullptr); 

それが今より理にかなっていますか?期待されるポインタごとにヌル値を渡すだけです。

+0

は LinkedListNode * toSort =新しいLinkedListNode(nullptr、nullptr、nullptr)を持ってしても大丈夫でしょう。 、次に auto list = toSort; リスト=新しいLinkedListNode(ptr1、ptr2、ptr3); これは大丈夫ですか? – justCurious

+0

@JinJung:構文とタイプの面では?はい。しかしそれはすぐにそれを上書きするためだけにポインタをコピーすることは奇妙に思えます。あなたはそれがあなたが意図したものだと確信していますか? –

+0

@JinJung、私はここで危険な水の中を歩いていると感じています。変数を初期化せずに使用しないでください。どちらにかかわらず、プログラミングに関してさらに質問がある場合は、別のSOの質問として投稿してください。 – StoryTeller

3

リテラル0は、ポインタが必要なnullポインタを指定します。関連するポインタ型へのキャストは冗長です。 、現代のC++ではちょうどnullptrを書き、そして好ましくは、コンストラクタの呼び出しのために中括弧を使用する、すなわち

auto* toSort = new LinkedListNode{ nullptr, nullptr, nullptr }; 

注:
リテラル0引数を受け取る2つの以上のオーバーロードがある¹ない限り、その場合、キャストはコールをあいまいにするのに役立ち、正しいコンストラクタを選択します。

+1

または単に 'auto'です。 –

+0

auto *とautoはどのように違いがありますか? 同じですか? – justCurious

+0

@JinJung:技術的には、最終的には同じタイプが得られます。 'auto *'はそれがポインタ型であることを明示的に読者に知らせる。コスト:余分な1文字。しかし、その情報は 'new'式からも容易に入手できます。それはスタイルと個人的な好みの問題です。私はその証言を好きで、他のいくつかは単に「自動」の簡潔さを好む。 –

関連する問題