C++
1// C++14以前ではstd::unique_ptrとnewを利用する場合、以下のコードを書きました。 2std::unique_ptr<C> c(new C()); 3 4// C++14でstd::make_uniqueを使用する場合、newは不要になります。 5auto v1 = std::make_unique<C>(); 6
コードとして前者のほうは形式的な一貫性並びに概念的な明確性があって、コードの簡潔さも後者より優れますね。
「make_unique」を導入するメリットは何でしょうか。
> コードの簡潔さも後者より優れますね。
そうですか?
まあ、"C"の文字数が多い場合、確かに後者のほうは短いですね。
文字数もそうですし、同じことを二度書くという冗長性で比べても、構文の複雑度で比べても、後者の方がシンプルだと思います。
前者が勝っているのは、型名が一文字の時の文字数だけで、私には他に見当たりません。
一貫性や概念的な明確性においても、episteme さんの回答の通りのように思います。
> コードとして前者のほうは形式的な一貫性並びに概念的な明確性があって、コードの簡潔さも後者より優れますね。
この部分の説明があれば、そこに焦点を当てた回答が得られるのではないでしょうか。
短く書ける より 正しく動く が優先 だと思うけどなー
前者は
int n;
std::unique_ptr<int> n_ptr(&n); // やっちゃダメ!
を許しちゃうよね。
Objective-Cには全く関係のない話なのでタグを外してください
> Objective-Cには全く関係のない話
そうですか
《Objective-C》はC++の標準化機関と関係ないのでしょうか
タグの説明には次のように書かれています。
https://teratail.com/tags/Objective-C
> Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。
次の表現は、もっとどうにかならなかったのかと思いますが。
> Smalltalkが取り入れられています。
早速お返答ありがとうございます
> Smalltalkが取り入れられています。
笑
Objective-CとC++が別の言語であることは理解できましたか?
理解できましたらObjective-Cのタグを外してください
