人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

C++,メンバ変数の初期化について
使っているコンパイラはvisual C++ 2008です。
class myclass
{
int i=0;
};
のような定義をすると、
static const int データ メンバ以外をクラス内で初期化することはできません
というエラーメッセージが出るのですが、クラス内で初期化できないのというのには何か理由があるのでしょうか?
よろしくお願いします。

●質問者: xtagforce
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● しおり

C++98 では、整数型の static const メンバしか class 内で初期化できなかった。 この制限は初期化がコンパイル時点で行えることを保証するためのものだ。

class 内メンバ初期化子

ということだそうです。
C++11ではできるように変更されました。


2 ● 勇者よっしー

出来てもいいかも知れません。がしかし、コンストラクタ内で初期化するのが、本来解ではないでしょうか。
例えば継承した時、継承したクラスで新しくコンストラクタを書いた時に、どっちが優先されるべきだと思いますか?
例えば
class myclass
{
int i=0;
};
class subclass : public myclass
{
subclass{ i=1; }
};

みたいに書いたら、subclassのインスタンスを作った直後は、iは0なんですかね、1なんですかね?

C++11を調べれば回答が出てると思いますが、逆に調べないと判らないという記載はよろしくないと思いますよ(その程度、今後そのソースを読む人全てが把握してるべきだという意見はもっともと思いつつ、傲慢じゃないかとも思うのです)。

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ