2016-05-01 17 views
-4
class Zb{ 
     int zbr; 
     int* kos; 
public: 
     Zb(int er):zbr(er); 
}; 

これは関数宣言であり、その実装にも初期化リストが必要ですか?関数の宣言と実装の両方に初期化リストを書く必要がありますか?

Zb::Zb(int er):zbr(er) { 
     kos = new int[zbr]; 
} 

ことがある(初期化リストが唯一の定義に属し

+4

。あなたのコンパイラはあなたにそう言ったでしょう。あなたのコンパイラで試してみませんでしたか、コンパイラは何らかの理由で実際にそれを受け入れましたか? – hvd

+0

私はあなたが何をしているのか疑問に思います。あなたはそれを実行しましたか? –

答えて

0

...私は初期化リストで全体c'torを書くことができ知っているが、私はちょうど私の質問に合った例を望んでいました、実際の機能コード)。

コードが無効です。コンパイラは、関数宣言で初期化リストを指定することはできません。

あなたのコードは次のようになります。

class Zb { 
     int zbr; 
     int* kos; 
public: 
     Zb(int er); 
}; 

と定義(CPPファイル)は、次のようになります。このコンストラクタの宣言は無効です

Zb::Zb(int er) : zbr(er) { 
     kos = new int[zbr]; 
} 
関連する問題