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

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

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

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

611閲覧

C++ / 配列を含むクラスのテンプレートの使用例について

CANMIZ

総合スコア7

C++

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/10/08 05:45

C++の配列を含むクラスのテンプレート宣言例について現在勉強をしているのですが、教科書に載っているコード例の中で分からないことがあるため、どなたか教えていただけますでしょうか?

教科書に載っているコード例は下記です。

C++

1// Class Template - Array 2 // array.h 3 4 template <typename T> 5 class Array { 6 T a[50]; 7 unsigned n; 8 T dummy; 9 public: 10 Array() : n{0u}, dummy{0} {} 11 T& operator[](unsigned i) { 12 return i < 50u ? a[i] : dummy; 13 } 14 };

分からないのは、上記の中のこの1文なのですが、

C++

1Array() : n{0u}, dummy{0} {}

このコードはどういう役割をしているのか(変数の初期化でしょうか?)、{ }の意味、また :(コロン)の使い方も含め、教えて頂けますと幸いです。

宜しくお願い致します。

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

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

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

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

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

guest

回答2

0

このコードはどういう役割をしているのか(変数の初期化でしょうか?)

メンバ変数の初期化です。

Array() : n{0u}, dummy{0} {}

Arrayのコンストラクト時に「nを0uで / dummyを0で コンストラクトせよ」って意味です。

投稿2020/10/08 05:56

episteme

総合スコア16614

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

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

CANMIZ

2020/10/08 06:02

コンストラクタだったんですね!ありがとうございます!
guest

0

ベストアンサー

このコードはどういう役割をしているのか(変数の初期化でしょうか?)、{ }の意味、また :(コロン)の使い方も含め、教えて頂けますと幸いです。

コンストラクタです。:以降の n{0u}, dummy{0}部分はメンバイニシャライザで、最後の{}はコンストラクタ本体(何もしない)です。

投稿2020/10/08 05:54

maisumakun

総合スコア145183

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

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

CANMIZ

2020/10/08 06:01

最後の{}は何もしないということをコンパイラに伝えているのですね :o ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問