は、宣言のこの種は、コンストラクタにデフォルト値を割り当てるために使用することができる。デフォルトパラメータ私は間違っていないよ場合はC++
/* .h */
class FooClass(){
private:
int* data;
int depth, rows, columns;
char* desc;
public:
...
}
/* .cpp */
FooClass::FooClass()
: data(NULL), depth(0), rows(0), columns(0), desc(NULL)
{
//whatever constructor does...
}
内のパラメータにデフォルト値を割り当てるために入院されていません機能:代わりドンでなければなりません
/* .h */
class FooClass(){
public:
void foofunc(int var1, int var2, int var3, int var4);
}
/* .cpp */
FooClass::foofunc(int var1, int var2)
: var3(0), var4(5)
{
//whatever function does...
}
OKではありませんこのようなE:
OK
/* .h */
class FooClass(){
public:
void foofunc(int var1, int var2, int var3 = 0, int var4 = 5);
}
/* .cpp */
FooClass::foofunc(int var1, int var2, int var3, int var4)
{
//whatever function does...
}
なぜ?
あなたが持っている理由閉会に投票した? – Matteo
宣言と定義が一致しないため、2番目と3番目の例はどちらも有効ではありません。同じ数のパラメータを作成した場合、どちらの方法も有効です。 – ssube
@peachykeenまず第3の例は大丈夫です。私はコピー/貼り付けミスをしましたが、回答者は私のことを理解しました。私の2番目の例では、2番目の例では(私はそれが正しい***ではないことを知っているので、***マークが付いているので)コンストラクタの初期化リストとの混乱のために、質問を間違えると、それを閉じるための投票が行われるべきではありません。 – Matteo