2016-05-11 1 views
4

私にはわからないという簡単な質問があります。私はこのコードを書かなかった。私はtetromino_とmoveTime_が2つの異なるクラスのインスタンスであることを知っています。私の質問はなぜ彼らが括弧の外で宣言されているのですか?このインスタンス宣言のメソッドには名前がありますか?場合クラス名の後で、かっこの前に引用符を付ける

Game::Game() : 
tetromino_{ static_cast <Tetromino::Type>(rand() % 7) }, 
moveTime_{ SDL_GetTicks() } 
{ 
    //srand(time(NULL)); 
    //initialize SDL and if it fails, present an error 
    if (SDL_Init(SDL_INIT_VIDEO) != 0){ 
     throw std::runtime_error("_Init(SDL_INIT_VIDEO)"); 
    } 
    //width of thhe window is 650/2 and the height is 650 
    SDL_CreateWindowAndRenderer(650/2, 650, SDL_WINDOW_OPENGL | SDL_WINDOW_BORDERLESS, &window_, &renderer_); 
    //set the window position 
    SDL_SetWindowPosition(window_, 365, 1); 
} 

私の質問は、これはこれは単なるコンストラクタです

Game::Game() : 
tetromino_{ static_cast <Tetromino::Type>(rand() % 7) }, 
moveTime_{ SDL_GetTicks() } 
{ 
+1

これはクラス定義ではありません。そのコンストラクタです。メンバー変数を構成しています。 –

答えて

3

と呼ばれるもの、明確ではありませんでした。

Game::Gameコンストラクタは、クラスtetromino_moveTime_の2つのメンバを構築しています。中括弧(角括弧ではありません)は、C++ 11/C++ 14の新機能であるuniform initialization syntaxです。

+0

ありがとうございます:D – soso