2011-05-02 80 views
0

我經歷了一些代碼,我在理解的語法有做太困難:語法「Foo(int v):val_(v){}」?

struct Foo { 

    int val_; 

    Foo(int v) : val_(v) {} //--->THIS LINE 

    }; 

冒號:似乎是一個成員訪問運算符。

我可以清楚地解釋上述行嗎?

回答

3

它初始化爲val_v

參見:Constructor Initialization Lists

+0

Foo(** int v **)或foo()是否會產生任何不同。該參數** int v **是此初始化所必需的。如果不是爲什麼該參數存在 – munish 2011-05-02 18:40:52

+0

@munish無論您傳遞什麼構造函數作爲參數v是val_'被初始化的值,所以是的,你確實需要構造函數的參數。 – jonsca 2011-05-02 18:46:53

+0

謝謝@jonsca,我明白了 – munish 2011-05-02 18:49:18

1

結構,C++可以構造就像類做。這正在初始化公共變量val_v,就像在構造函數體中有val_ = v;一樣。參見this thread在效率方面的好處。