オブジェクト指向の用語について

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

オブジェクト指向の用語について

#1

投稿記事 by マタギの君主さま » 9年前

オブジェクト指向とかでよく聞くインスタンスとかなんとかってあるじゃないですか 

class Character{ //というクラスがあったとして
public:
private:
};
 
Character Player;  //と   

Character* Player; //と

Player = new Character; // は、具体的にどう違うか教えてほしいです!
------------------------------------------------------------------------------------------------
BCGame_Trial* game = NULL;   //ある本では こう書いた後
game = new BCGame_Trial;   // こうやってnewしてるんですが 関数にアクセスするだけなら
-------------------------------------------------------------------------------------------------
BCGame_Trial* game; //こうしても関数に
game->initialize(); // VS2013では関数一覧がでるってことはつまりアクセスできるってことじゃないですか?  newと どう違うのですか?

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: オブジェクト指向の用語について

#2

投稿記事 by みけCAT » 9年前

マタギの君主さま さんが書きました:Character Player;
Characterの個体を用意します。
マタギの君主さま さんが書きました:Character* Player;
Characterの個体のありかを書くためのメモを用意します。
マタギの君主さま さんが書きました:Player = new Character;
新たなCharacterの個体を生み出し、そのありかをメモに書き込みます。
マタギの君主さま さんが書きました:関数にアクセスするだけなら
-------------------------------------------------------------------------------------------------
BCGame_Trial* game; //こうしても関数に
game->initialize(); // VS2013では関数一覧がでるってことはつまりアクセスできるってことじゃないですか?
いいえ、できません。
初期状態ではメモには意味のないことが書かれているので、そのメモを信じて関数を呼び出そうとすると混乱して死ぬことがあります。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

box
記事: 2002
登録日時: 14年前

Re: オブジェクト指向の用語について

#3

投稿記事 by box » 9年前

マタギの君主さま さんが書きました: BCGame_Trial* game; //こうしても関数に
game->initialize(); // VS2013では関数一覧がでるってことはつまりアクセスできるってことじゃないですか?  newと どう違うのですか?
それは、開発環境の側で
BCGame_Trial
という型を認識すると自動的に使える「可能性がある」メソッドをヒント表示しているだけで、
実際に使っていいかどうかとはまた別の話。

上の例だと、
game
という変数の値は不定である(つまり、どこを指しているかわからない)わけで、それを頼りにしてinitializeメソッドを呼ぶと大変なことになる
というのは別の回答者さんからの回答のとおりです。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

閉鎖

“C言語何でも質問掲示板” へ戻る