VC++の勉強で理解できない箇所について

このQ&Aのポイント
  • VC++の勉強をしている中で、理解できない箇所があります。特に、Daimao buとHero youという部分についての理解ができません。
  • これらの部分では、変数型を作っているのだと思いますが、具体的にはどのような値が入るのかが分かりません。また、Hero youの部分でどのクラスとの継承関係があるのかも理解できません。
  • 質問者としては、これらの部分の解釈や使い方について詳しく教えていただきたいです。
回答を見る
  • ベストアンサー

質問です!とても基本的なことなので、少し詳しい方なら、解ると思います。

最近、VC++の勉強を始めました。 とあるサイトで勉強させていただいていて、 その中のプログラムで http://www.asahi-net.or.jp/~yf8k-kbys/newcpp9.html この、簡単なゲームを作るのがありました。 ほぼ理解できるのですが、1箇所理解できないのが、 Daimao bu; //対決場所にいる大魔王bu! Hero you; //対決場所にいるヒーローyou! ここです。ここでは自分で好きな変数型を作ってるという意味で daimaoという型(intとかみたいな)の変数名 buという事だと思うのですが、 daimao形と言われても、中に数字とか文字とか何が入るのでしょうか? どう解釈すればよいのでしょうか? そして、ここで、 bu と you を作ってあるためだと思うのですが、 この行の少し下に、 you.kougeki_suru(kougeki); //ヒーローyouの攻撃 というのもあります。 いきなりyou.でヒーローのクラスと継承できてる形になってますが、 どうしてでしょうか? 多分上に書いた、Hero youのおかげで書けるようになってると思うのですが、 詳しく教えていただけないでしょうか? よろしくお願いします。

  • pen123
  • お礼率58% (222/377)

質問者が選んだベストアンサー

  • ベストアンサー
  • buriburi3
  • ベストアンサー率44% (353/792)
回答No.3

質問者さんはクラスとインスタンスの区別がついていないか初歩的な勘違いをしているJava経験者のように思われます。 DaimaoとHeroはクラスです。 これらのクラスはTaiketu_basyoクラスより前に宣言されています。 youはHeroクラスのインスタンスです。 Javaではインスタンスは必ずヒープにつくられるのでnewしなければ作成されませんがC++ではスタックに作成する事が出来るのでyouがポインタでない場合には宣言時にインスタンスが作成されます。

pen123
質問者

お礼

回答ありがとうございます! すみません。ホント基本的なとこ勘違いしてました。 おかげで解決できました。 とても参考になりました。ありがとうございました。

その他の回答 (5)

  • tukai
  • ベストアンサー率14% (2/14)
回答No.6

Hero you; Daimao bu; これはHeroというクラスのオブジェクトyouとDaimaoというクラスのオブジェクトbuを宣言しています そして you.kougeki_suru(kougeki); はyouからkougeki_suruと言う関数(C++ではメソッドと呼ばなかったような..)を呼びだしています #1さんは色々とこんがらがっているみたいですね まずオブジェクト指向を理解するためにjavaをやってみてはいかがでしょうか

  • noconan
  • ベストアンサー率0% (0/1)
回答No.5

はじめまして。 >daimao形と言われても、中に数字とか文字とか何が入るのでしょうか? まず Daimao bu; と定義された時点でDaimaoクラスのコンストラクタが呼ばれ、そのクラスのメンバ変数powerに100が設定されます。どうように Hero you; でもコンストラクタが呼ばれそのクラスのメンバ変数powerに100が設定されます。 Daimao bu; と Hero you; の定義ではこの2つのみが行われます。 >いきなりyou.でヒーローのクラスと継承できてる形になってますが これは継承ではありません。Heroクラスのオブジェクトであるyouを利用し、Heroクラスのメンバ関数kougeki_suru(int n)を使用するということであり、このkougeki_suru関数の引数にkougekiを渡しているためyou.kougeki_suru(kougeki); と記述してあります。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.4

>どうせ回答するなら、内容の濃いものお願いします。 残念ながらそれ以外に回答のしようがないべ。 >daimao形と言われても、中に数字とか文字とか何が入るのでしょうか? サイトには Daimao 型の内容も書かれていますね。 >いきなりyou.でヒーローのクラスと継承できてる形になってますが、 継承ではありません。サイトに継承の説明も載っていますね。 など諸々判断するに、C++ の文法が解説してある書籍が必要なように見受けられます。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.2

ただのメソッド呼び出しです。 質問で挙げてるサイトを最初から読んでます?恐らく理解できていないのは 1箇所ではありません。

pen123
質問者

補足

最初から読んでます。 どうせ回答するなら、内容の濃いものお願いします。

noname#39970
noname#39970
回答No.1

Daimao と Hero を定義している場所を探したら? 別のファイル(????.h)かもしれないよ

関連するQ&A

  • プログラムの進行が一時ストップしません

    void Taiketu_basyo::taiketu() { int iti,kougeki; //一時的に必要な「位置」と「攻撃量」の変数 cout << "さあ、あなたの攻撃です。" << '\n'; cout << "攻撃の位置(1~5の数値)を入力してください。" << '\n'; cin >> iti; cout << "攻撃に使うパワー(100以下の数値)を入力してください。" << '\n'; cin >> kougeki; cout << '\n'; you.kougeki_suru(kougeki); if(buu_no_basyo == iti){ buu.kougeki_sareru(kougeki * 2); }else{ cout << "あなたの攻撃は外れたようです。" << '\n'; } cout << '\n'; cout << "大魔王の攻撃です。" << '\n'; cout << "(エンターキーを押してください)" << '\n'; cin.sync(); cin.get(); iti = rand() % 5 + 1; kougeki = rand() % 100 + 1; buu.kougeki_suru(kougeki); if(you_no_basyo == iti){ you.kougeki_sareru(kougeki * 2); }else{ cout << "大魔王ブウの攻撃は外れたようです。" << '\n'; } } int main() { Taiketu_basyo dokoka; //対決場所dokokaの生成 //ここでコンストラクタが働きヒーローと大魔王の位置が決められる dokoka.taiketu(); //dokokaの対決 このプログラムなんですが cin.sync(); cin.get(); の部分で「プログラムの進行を一時ストップし、エンターキー(リターンキー)で進行を再開する」としたんですがプログラムを動かしてみるとストップしません。 色々考えてみたんですが原因がわからないのでどなたか教えてもらえませんでしょうか? よろしくお願いします。 言語はC++でやってます。

  • C++とVC++の違いについて

    この質問をご覧頂きありがとうございます。 みなさんに2つ、お聞きしたいことがあり、質問させていただきます。 1.C++とVC++とでは、どのくらいの違い(どういう違い、特徴)があるのでしょうか? 2.また、これからC++/VC++でプログラミングを始めようとした場合、 C++からVC++へと段階を踏んで勉強した方がよいのでしょうか? 一応、私のプログラミングの履歴としては、 言語としてVisual Basicは多少勉強はしておりました。 また、オブジェクト指向の基礎程度(多相、継承、カプセル化)は理解しています。 抽象的な質問で大変恐縮なのですが、 みなさんの経験論や、ご参考にした本、HP等がありましたら、 ご教授いただければと思います。

  • インスタンス変数とローカル変数のスコープの違い

    Ruby言語を独学で勉強している者です。 現在たのしいRuby第3版という著書を参考にして勉強しています。 現在はクラスの継承、クラス文の定義の仕方を学んでいます。 そこで教えて欲しいのですが、 ローカル変数とはメソッドごとに異なる変数として扱われる。 インスタンス変数は同じインスタンスの中であればメソッドの定義を越えて その値を参照したり変更したりできるとあります。 そもそもインスタンスとは、オブジェクトとおほ同意義と捉えてるのですが この認識に間違いはないでしょうか。 ニュアンス的なものは理解したのですが、もう少しこの二つの変数の定義について 理屈を把握したいので、お手すきなお方がいらっしゃいましたら、具体的な例をあげて ご説明くださいませんか・・・。 この本すごく素人にもわかりやすい丁寧な解説で書いてあって、決して説明不足とは 思わないのですが、プログラマーさんの意見なども参考にしたくて投稿してみました。

    • ベストアンサー
    • Ruby
  • C# IDisposable の必要性について

    Visual Studio 2010 を使って C# の勉強をしています。 始めたばかりで質問がおかしかったらすみません。 IDisposable を継承する意味がわかっていません。 MSDN の(http://msdn.microsoft.com/ja-jp/library/fs2xkftw.aspx) 例: 基底クラスの Dispose の実装 にて、 DisposableResourceクラスが IDisposable を継承していますが、 IDisposable を継承する意味はあるのでしょうか? IDisposable がインタフェイスというのは理解していますが、 DisposableResourceクラス の中のpublic void Dispose() は IDisposable を継承しないでも かけるのではないか?と思っています。 恐らく自分の知識が何か抜けていると思うのですが、宜しくお願いします。

  • 関数の最初の変数有効期限について

    最近C言語を勉強しているのですが変数の有効範囲について教えてください。 ローカルやグローバル変数があるのが分かって関数内の変数も関数内でのみ有効というのも理解したのですが int a( int b ); という関数の最初に書く括弧の中のbと宣言している変数も関数内に含まれているという事で良いのでしょうか?。

  • プログラミングの勉強法

    現在、職業訓練校でiPhoneアプリの作成を勉強しているのですが、 中々着いていけません。コードの全体的な仕組みは何となく 理解できるのですが、クラス・インスタンス・オブジェクト・インスタンス変数… など、それらがコードの中で入り交じってくると細かい成り立ちが 途端に解らなくなります。これらの要素をよく理解できる勉強法 などはありませんでしょうか?非常に困っております。 以上、どなたか何卒宜しくお願い致します。

  • ClassLoaderを作成してみたいのですが

    クラスから別の場所のクラスを呼び出す構造を作りたくて、ClassLoaderを勉強しています。 まず、ClassLoaderを継承したLoaderを作成しなくてはいけないというのがわかり、その中で抽象メソッドloadClassと、関係するdefine,resolve,findSystemなどを記述してやるらしいというのまでは、あやふやながら理解できました。 それで、呼び出す側では、Loader.loadClassを呼んでクラスをロードし、newInstanceメソッドを呼べば、その実体ができる"らしい"まで解読して頭がパンクしてしまいました。 疑問は、以下の通りです。 ・「Loaderは自分で作らないといけない」とあったのですが、ClassLoaderを継承させたLoaderを自前で書かないといけないのでしょうか。単にオブジェクトを生成するだけでいいんでしょうか。簡単なサンプルがあれば嬉しいのですが・・・。 ・ ひとまず、簡単な計算を行うクラスを作って呼び出してみたいのですが、newInstanceを実行するとインスタンスが生成されて即中身が実行される、という説明文を読んだのですが、値の受け渡しはどうすればできるのでしょうか。 以上、よろしくご教示お願いいたします。

    • ベストアンサー
    • Java
  • 医者になりたければ、もっと熱心に勉強しなさい。

    「医者になりたければ、もっと熱心に勉強しなさい」 と、いう意味になるように↓の語句を並びかえたいのですが、 (want/be/you/you/study/if/must/to/a doctor/harder)  If you want to be a doctor,までは出来ました。その後はどうすれば良いのかが分かりません。  解答は、~you must study harder.と、なっていたのですが、理解できません。並びかえだから当り前、この中の語句を使って文をつくりますけど、なぜmustがあるのでしょうか?  日本文には、「もっと熱心に勉強しなさい」と命令してますよね。 命令文にしなくてもいいのですか?  「勉強しなさい=勉強しなければならない」とも考えたのですが、だとしたら、なぜ最後にhardじゃなくて比較級のharderなのでしょうか?  どなたか教えてください。お願いします。  

  • 先頭アドレスとは何ですか?

    Cの勉強をするため、Cの勉強用のホームページを読んでいたのですが その中に 「“int a[10];”というふうに配列を宣言した場合、配列名“a”はその配列の先頭アドレスになります」 という一文がありました。これが理解できません。 「アドレス」はメモリ内の、変数が記憶されている場所のことですよね。 先頭アドレスの「先頭」とは一体何に対して「先頭」なのでしょうか。 「一番前」という意味でしょうか。なら何の中で一番前なのでしょう? さらにそのホームページでは 「配列名“a”を式の中に書くと、普通は配列の先頭要素を指すポインタになります」 と言いなおしていましたが、これもよくわかりません。 「先頭要素」とは? 一体何に対する先頭なのでしょう?要素の先頭とは何を指すのかがいまいちピンときません。 初心者にありがちなお恥ずかしい質問ではありますが、ご教授いただければ幸いです。

  • ジャバスクリプト 変数への代入について

    あるジャバスクリプトで書かれたウェブアプリケーションのコードを見て勉強しています。 その中で、理解できないコードがあったので、その意味を教えてください。 var a = .5; という感じに変数に数字が代入してあるように見えるのですが、数字の前にピリオド?が ついていて、数字の代入ではないようです。これは一体なにを表わしているのでしょうか? よろしくお願いします。

専門家に質問してみよう