Path: chuka.playstation.co.uk!news1.scei.co.jp!usenet From: "Sugihara Yoshimi" Newsgroups: playstation.ny.program.labo Subject: Re: GCC++の初期化ついて Date: 27 Apr 1997 17:47:02 GMT Organization: PlayStation Net Yarouze Lines: 49 Message-ID: <01bc5332$bb936300$LocalHost@default> References: <01bc4ff3$89f95f80$5410dbca@default> <01bc5059$ac5515e0$9d36d4ca@pbc00426.niftyserve.or.jp> <01bc50c8$3278f380$LocalHost@default> <3360DB0F.AA74F82A@aix.or.jp> <33637B25.360F29F4@aix.or.jp> NNTP-Posting-Host: 202.219.16.68 X-Newsreader: Microsoft Internet News 4.70.1157 Sugiharaです。 > > 「 : ほにゃらら〜」の部分は、基底クラスに引数を渡す時に > > 使用します。こんな感じ > > そうなんですか? > 確か「const」を使った時に初期化できなくなるからメンバ変数 > を初期化するときはこのようにやった方がいいってどっかの本に > 書いてあったと思います。 > 事実,この方式でも正常にコンパイルできます。(C++Builder > で確認) > > > 例: > > <正しい> > class Test > { > private: > const int max; > public: > Test( int a ):max( a ){} > }; > > <間違い> > class Test > { > private: > const int max; > public: > Test( int a ){ max = a; } //定数に代入はできない。 > }; > あらら?メッセージを書いている間に、新しいメッセージが追加されていました。 なるほど、確かにconstオブジェクトのメンバ変数には、高田さんが示した方法が正 しいです。実際やってみたところGCCがconstオブジェクトに代入するなと怒ってき ました。 う〜ん。先に述べた内容も少し変わってきますね。 ただ、高田さんが示したようなconstオブジェクトの初期化を引数で行うという方法 は、少し強引な様な気がします。 constオブジェクトは「定数」として扱いたいわけであり、あらかじめ一定の値を入 れておくものだと思います。constオブジェクトの初期化を引数でおこなうと、const オブジェクトである変数(ちょっと意味不明)のような感じになってしまいますか ら、あまりいい使い方ではないと思います。