オブジェクト指向とかでよく聞くインスタンスとかなんとかってあるじゃないですか
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と どう違うのですか?
オブジェクト指向の用語について
Re: オブジェクト指向の用語について
Characterの個体を用意します。マタギの君主さま さんが書きました:Character Player;
Characterの個体のありかを書くためのメモを用意します。マタギの君主さま さんが書きました:Character* Player;
新たなCharacterの個体を生み出し、そのありかをメモに書き込みます。マタギの君主さま さんが書きました:Player = new Character;
いいえ、できません。マタギの君主さま さんが書きました:関数にアクセスするだけなら
-------------------------------------------------------------------------------------------------
BCGame_Trial* game; //こうしても関数に
game->initialize(); // VS2013では関数一覧がでるってことはつまりアクセスできるってことじゃないですか?
初期状態ではメモには意味のないことが書かれているので、そのメモを信じて関数を呼び出そうとすると混乱して死ぬことがあります。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: オブジェクト指向の用語について
それは、開発環境の側でマタギの君主さま さんが書きました: BCGame_Trial* game; //こうしても関数に
game->initialize(); // VS2013では関数一覧がでるってことはつまりアクセスできるってことじゃないですか? newと どう違うのですか?
BCGame_Trial
という型を認識すると自動的に使える「可能性がある」メソッドをヒント表示しているだけで、
実際に使っていいかどうかとはまた別の話。
上の例だと、
game
という変数の値は不定である(つまり、どこを指しているかわからない)わけで、それを頼りにしてinitializeメソッドを呼ぶと大変なことになる
というのは別の回答者さんからの回答のとおりです。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。