2016-10-16 11 views
7

組み込み型にかっこ演算子がある場合、それはどういう意味ですか?C++で()を持つ組み込み型の意味

INT()またはフロート()

それはデフォルトコンストラクタのようなものですか、それは組み込み型の異なる意味がありますか?

----編集----

以上のコンテキストを追加するには、次のC++のための私の学校の教科書では

を、私は、テンプレートに関する章にしています。デモンストレーションに使用されるテンプレートは、テーブルテンプレート(2D配列)です。 の機能の1つテーブルサイズ変更メソッドであり、テーブルのサイズを変更する方法であり、テーブルに使用される一部のコンストラクタでも使用されます。

template <typename T> 
Table<T>::Table<T>(int m, int n) 
{ 
    mDataMatrix = 0; 
    mNumRows = 0; 
    mNumCols = 0; 
    resize(m, n, T()); 
} 

とコンストラクタの定義で

template <typename T> 
void Table<T>::resize(int m, int n, const T& value) 
{ 
    // Destroy the previous data. 
    destroy(); 

    // Save dimensions. 
    mNumRows = m; 
    mNumCols = n; 

    // Allocate a row (array) of pointers. 
    mDataMatrix = new T*[mNumRows]; 

    // Now, loop through each pointer in this row array. 
    for(int i = 0; i < mNumRows; ++i) 
    { 
     // And allocate a column (array) to build the table. 
     mDataMatrix[i] = new T[mNumCols];  

     // Now loop through each element in this row[i] 
     // and copy 'value' into it. 
     for(int j = 0; j < mNumCols; ++j)  
      mDataMatrix[i][j] = value; 
    } 
} 

リサイズの第三引数T()である(そしてIはを想定:問題のコンストラクタとリサイズ方法でありますTは、テンプレートの指定されたタイプとなります)。 の定義において

をリサイズ、T()はテーブル内の要素にデフォルト値を割り当てること引数に使用されます。

これまでの回答から、これはゼロ初期化です。私は、値がテーブル内の各要素について0であることを意味すると仮定しています(タイプがの文字列の場合は0に相当します)。これは正しいです?

+0

をそれはデフォルト(ゼロ初期化)「コンストラクタ」である必要がありますが、この使用法の例といくつかのコードが望ましいだろう – UnholySheep

+3

ショートC++の断片が依存する多くの意味を持つことができます文脈上作業中のプログラムから抜粋してください。 –

+0

この特定の構文は、文脈に応じて少なくとも2つの異なる意味を持ちます。 –

答えて

5

つまり、value initializationです。

auto x = int();手段

T()の例では、タイプTのオブジェクトが作成され、パラメータとして渡されます。

ます。また、書くことができる:

resize(m, n, T{}); 
3

あなたのコードは、intまたはfloatと宣言しているときとまったく違うことがあります。それはゼロを初期化します。

の例では、これらの3本のラインは同じです。

int a = int(); 

int a = int{}; 

int a{}; 

3がゼロに初期化されているすべてのものを。

関連する問題