SP6章のメンバ初期化子リスト?について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: SP6章のメンバ初期化子リスト?について

Re: SP6章のメンバ初期化子リスト?について

#3

by むへーれ » 5年前

() {}となっていても繋がっているわけではないのですね
ありがとうございます

Re: SP6章のメンバ初期化子リスト?について

#2

by usao » 5年前

文面から察するに,ちょっとコードの読み方を間違っていると思う.

コード:

BaseScene::BaseScene(ISceneChanger* changer) 
    : mImageHandle(0)  //←メンバイニシャライザ
{
    //ここはコンストラクタの実装
    mSceneChanger = changer;
}
mImageHandleを0に初期化する記述にはメンバイニシャライザを使っているが,
mSceneChangerに関しては,コンストラクタの処理にて引数の値を代入している.

この例は「初期化or代入」で何かしらの違いが出る場面でもないだろうから,

コード:

BaseScene::BaseScene(ISceneChanger* changer) 
{
    //ここはコンストラクタの実装
    mImageHandle = 0;  //普通に0を代入
    mSceneChanger = changer;
}
でも

コード:

BaseScene::BaseScene(ISceneChanger* changer) 
    : mImageHandle(0)  //←メンバイニシャライザ
    , mSceneChanger( changer )  //←こっちもメンバイニシャライザで初期化するぜ!
{
    //ここはコンストラクタの実装(何もやることないです)
}
でも,好きに書けば良いと思う.

SP6章のメンバ初期化子リスト?について

#1

by むへーれ » 5年前

ゲームプログラミングの館SP6章の

コード:

/*BaseScene.cpp*/

#include "BaseScene.h"
#include "DxLib.h"

BaseScene::BaseScene(ISceneChanger* changer) : 
    mImageHandle(0) {
    mSceneChanger = changer;
}

void BaseScene::Finalize(){
    DeleteGraph(mImageHandle);
}

void BaseScene::Draw(){
    DrawGraph(0,0,mImageHandle,FALSE);
}
のうち

コード:

BaseScene::BaseScene(ISceneChanger* changer) : 
    mImageHandle(0) {
    mSceneChanger = changer;
}
これがメンバ初期化というのは分かったのですが、なぜmImageHandle(0)の中でmSceneChanger=changerを行っているのかがよくわかりませんでした
mImageHandleを使わない場合でもmSceneChanger=changerというのは必要だと思うのですがmSceneChanger(changer){}という書き方ではだめなのでしょうか

ページトップ