質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++11

C++11は2011年に容認されたC++のISO標準です。以前のC++03に代わるもので、中枢の言語の変更・修正、標準ライブラリの拡張・改善を加えたものです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

3回答

859閲覧

この2つC++文の違い?

insecticide

総合スコア315

C++11

C++11は2011年に容認されたC++のISO標準です。以前のC++03に代わるもので、中枢の言語の変更・修正、標準ライブラリの拡張・改善を加えたものです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2022/06/27 08:51

下記2つの文の意味の違いを解釈できる方お願いします。

cpp

1std::unique_ptr<int> pInt {new int{1}}; 2auto pInt = std::make_unique<int>(1);

それに、 int{1}と<int>(1)の意味は何でしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

int32_t

2022/06/27 10:43

質問者さんの解釈を教えて下さい。
insecticide

2022/06/27 11:09

自分が解釈できなくて、皆さんに聞きたいわけで、、、
int32_t

2022/06/27 21:38

「解説してくれ」という類の質問は何をどこまで説明したらよいのか不明で回答者の負担が大きいので不評を買いやすいです。質問者さんがどこまでわかっていてどこがわからないのか書いたほうが回答しやすくなります。
fana

2022/06/28 01:05 編集

https://teratail.com/questions/msl58v8cfbnsdg 同じ内容の質問を繰り返さないようにしていただきたい. 両質問は「話が違う」とお思いならば,質問を繰り返すよりも先に基本の文法を学ぶことを始めるべきと思う. <int>(1) とかいう切り出し方をしている時点で文法要素がわかっていないと見える.
insecticide

2022/06/28 02:52 編集

同じ質問? ないと思いますよ。質問の側面が違うと思います。 或いは根本的に理解できていないかもしれまん。 時には色々混じっていて、分かると分からない境目も曖昧になっちゃうのですね。 自分が頭悪いせいだと思いますけれども、一つのプログラミング言語として、 こんなに滅茶苦茶にされてきて、異様ですね。
fana

2022/06/28 03:01

最初から(?)いきなり > std::unique_ptr<int> pInt {new int{1}}; > auto pInt = std::make_unique<int>(1); みたいなのに手を出すから文法把握だけでムリが生じているのでは? 簡単な要素側から1個ずつ学習して把握していくという当たり前の学習手順に取り組むべきではないのか? ということです.
insecticide

2022/06/28 06:08

ご指摘の通りと思います。 >簡単な要素側から1個ずつ学習して把握していく ごもっともですね。 人生一番長い間付き合ってきたのはC言語で、 今やまた1から勉強しなければならないというのは辛いですね。 さあ、もう一度頑張ります❣ でもpointer, template, メモリの確保と解放。 これぐらいの事を何十年も様式変更をやっても終わらない。。。 やつらは飽きない。。。
guest

回答3

0

ベストアンサー

解釈としてはそれぞれ下記の通りかと思います。

std::unique_ptr<int> pInt {new int{1}};

std::unique_ptr<int> 型の変数を定義
コンストラクタにnew int{1}で生成される値が渡される

auto pInt = std::make_unique<int>(1);

関数std::make_unique<int>に引数1を渡して戻ってくる値で変数を初期化
変数の型は戻ってくる値から推論される。

結果として得られるものは同じです。

引用テキストint{1}と<int>(1)の意味は何でしょうか。

int{1}はコンストラクタの一様初期化 (uniform initialization)と呼ばれる構文です。
<int>(1)は関数テンプレートstd::make_unique<type>( type a ))一部分とその引数(a)です。

投稿2022/06/28 12:08

Serbonis

総合スコア581

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

insecticide

2022/06/29 01:38

丁寧なご説明本当にありがとうございます。💛💛 C++を更に勉強していきます。 C++には底はないですね。
guest

0

それに、 int{1}と<int>(1)の意味は何でしょうか。

new int{1} は new-expression という構文です。
new int が最も簡単な new-expression です。
この場合、領域を確保するだけで値の初期化は行われません。
new int() または new int{} のように new-initializer の (){} を付けると、int の場合 0 で初期化されます。
new int(1) または new int{1} のように (1){1} を付けると、初期値は 1 になります。

std::make_unique<int>(1)std::make_unique<int> というクラス のコンストラクタを引数 1 で呼び出すものです。

投稿2022/06/27 13:24

kazuma-s

総合スコア8224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

insecticide

2022/06/27 20:22

丁寧なご説明ありがとうございます❣ C言語。。。 ポインター、template, メモリ確保と解放、初期化。 これだけの表現様式の変化のために、何十年も続けられます。 ちんぷんかんぷん分からなくなるまで。 頭の良い人でなきゃ、ついて行けない
guest

0

下記2つの文の意味の違いを解釈できる方お願いします。
それに、 int{1}と<int>(1)の意味は何でしょうか。

いずれも得られるものは同じ。

投稿2022/06/27 10:56

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

insecticide

2022/06/27 20:24

>いずれも得られるものは同じ。 そうですか。 同じ事なら、何のためにかなり違う表現様式を発明しなければならないのでしょうか
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問