C++スコーラ内検索 / 「クラス」で検索した結果

検索 :
  • クラス
    ...ジンを止める クラス クラスは構造体の機能を拡張したものです。 クラスの中に定義された変数をメンバ変数と言います。 #include iostream #include string // キャラクタークラス class Character{ public // アクセス修飾子 //【メンバ変数】 std string name;// 名前 int HP;// 体力 int STR;// 攻撃力 //【メンバ関数】 Character();// コンストラクタ ~Character();// デストラクタ }; アクセス修飾子については、後で説明します。 とりあえず今は public と書いておきましょう。 コンストラクタとデストラクタも後で説明します。 メンバ関数 構造体ではメンバとして変数しか扱えませんが、クラスでは...
  • Protected
    継承によるメンバへのアクセス クラスの章でアクセス制御について触れましたが 継承を学んだところでもう一度おさらいしておきましょう。 public public修飾子がつけられたメンバは そのクラス 派生クラス そのクラスを使う側 のどこからでもアクセスできます。 class Person{ public string name; } private private修飾子がつけられたメンバはそのクラスからのみアクセスできます。 つまり、継承した派生クラスからはアクセスできないのです。 もちろんそのクラスを使う側からも見えません。 class Person{ private string name; } protected まだ触れていない protected というキーワードがあります。 このアクセス範囲は そのクラスと...
  • 継承
    クラスの継承 クラスは継承という概念を使い拡張することが可能です。 継承はあるクラスから性質を受け継いで新しいクラスを作ることで 新しいメンバ関数、メンバ変数の追加 メソッドの上書き 等が出来ます。 拡張される側のクラスの事を 「基底クラス」 といい 拡張された側のクラスを 「派生クラス」 といいます。 クラスの継承は以下のようなルールがあります。 派生クラスは基底クラスのメンバ変数と関数を受け継ぐ。 基底クラスは1つしか指定できない。 派生クラスは複数作成可能。 このコードでは、「Student」クラスが「Person」クラスを継承しています。 /*--------------Person.hの中身----------------*/ #pragma once #include string class Person{ public ...
  • ポリモーフィズム
    ...章の「Person」クラスと「Student」クラスを例にとります。 「Student」クラスは「Person」クラスのサブクラスです。 実は、派生クラスのポインタは基底クラス型に入れることができます。 Person *satou = new Student(); 佐藤は学生である前に人間なのです。 しかし、Person型に入れるとStudent型の変数や関数を呼び出すことができなくなります。 satou- SelfIntroduction();// 呼び出し可 satou- GetID();// 呼び出し不可 エラー さらに、以下のような問題があります。 オーバーライドした関数 「SelfIntroduction」は「Student」クラスでオーバーライドしていますが、 Person型に入れると「Person」クラスの「SelfIntroduc...
  • オブジェクト
    クラスの実体 実体の生成 クラスは型であり、それだけでは実体はありません。 実体を宣言するには以下のように記述します。 クラス名* 変数名; この実体の事をオブジェクト、またはインスタンスと呼びます。 1つのクラスに対し複数のオブジェクトを作ることが出来ます。 Character* hero;// Characterクラスの実体「hero」を定義 Character* slime;// Characterクラスの実体「slime」を定義 ポインタを使う理由 (難しいので今は読み飛ばし読み飛ばして、後で戻って見直すことをお勧めします。) 上記の方法だと、オブジェクトはスコープ { } 内でしか生存できません。 スコープが終了するとint型など普通の変数同様そこで破棄されます。 しかしそれでは都合が悪い場合が多く存在します。 そこでオブジェクトのポインタとnew...
  • 仮想関数
    仮想関数 仮想関数 スーパークラス側の関数の前に「virtual」とつけることによって、前章の問題は解決します。 前に「virtual」とついた関数のことを仮想関数と呼びます。 仮想関数をオーバーライドした場合、派生クラスの関数が優先されて呼び出されます。 /*--------------Person.hの中身----------------*/ #pragma once #include string using namespace std; class Person{ protected string name;// 名前 int age;// 年齢 public Person(string name, int age);// コンストラクタ virtual ~Person();// デストラクタ virtual void SelfIntroductio...
  • 静的メンバ
    ...い方 静的メンバ(クラスメンバ) 静的変数(クラス変数) 静的関数 ユーティリティークラスの説明
  • 分岐
    クラスとオブジェクト オブジェクトの生成 クラスは型であり、それだけでは実態はありません。 実態を宣言するには以下のように記述します。 クラス名 変数名; この実態の事をオブジェクト、またはインスタンスと呼びます。 1つのクラスに対し複数のオブジェクトを作ることが出来ます。 Person tanaka, saito, suzuki; オブジェクトへのアクセス オブジェクトのアクセスにはドット(.)を使います。 オブジェクト.メンバ tanaka.age = 20; tanaka.selfIntroduction(); ポインタを使う場合 (今は読み飛ばし読み飛ばして、後で戻って見直すことをお勧めします。) 上記の方法だと、オブジェクトはスコープ { } 内でしか生存できません。 スコープが終了するとint型など普通の変数同様そこで破棄されます。 ...
  • オブジェクトポインタ,newとdelete
    ...常のポインタと同様、クラスに対してもポインタで扱うことができる。 クラス型のポインタpはobjを指すようになる。 Person obj; Person *p = obj; ポインタの場合、各変数や関数にアクセスする時は 下の例のように- (アロー演算子)を使用する。 p- age; p- selfIntroduction(); メモリの動的確保と解放(malloc free、 new delete) new 演算子 C、C++の配列は動的な配列の確保ができない。 new演算子を使うとメモリの動的確保が可能になる。 new,deleteはC++ の演算子なのでincludeの必要はない。 cの stdlib.h にあるmalloc と freeでも使用可能 ただし、演算子オーバーロードが使えない、コンストラクタ、デストラクタが呼び出せ...
  • アクセス制御
    ...ivate そのクラス内からのみアクセス可能 protected そのクラスとその派生クラスからアクセス可能(後の章で説明) メンバ変数をprivateにすると外部からの直接的な参照と変更ができなくなります。 これにより変更されたくない変数を隠したり、値を安全に処理させることが可能です。 値の代入に関数を使い、不正な値が代入されないようにチェックする。 値の変更に伴い、関連する処理を実行させる。 メンバ変数を隠し、クラスの内部処理専用変数として使う。 アクセス制限の例 /*--------------Character.hの中身----------------*/ #pragma once #include iostream #include string // キャラクタークラス class Character{ private //【メ...
  • オーバーライド
    オーバーライド オーバーライド 基底クラスの関数は派生クラスで上書きすることが出来ます。 これをオーバーライドと呼び、同じ名前でも派生先によって動作を変えることができます。 /*--------------Person.hの中身----------------*/ #pragma once #include iostream #include string class Person{ protected std string name;// 名前 int age;// 年齢 public Person(std string name, int age);// コンストラクタ virtual ~Person();// デストラクタ void SelfIntroduction()// 自己紹介 }; /*--------------Person.cpp...
  • C++とは
    ...ット 保守性が高い クラスからオブジェクトを実装する事により複製が容易になる 他言語に比べて処理速度が早い デメリット Cに比べてファイルサイズは大きくなる メモリの管理をプログラマがきちんと行う必要がある(delete) オブジェクト指向 オブジェクト指向なので クラスによるオブジェクトの複製などが可能です。 JAVAとの違い  JAVA:インタプリタ言語→中間コードに一度変換し、その後各環境に合わせて実行可能な形式に変換する言語  C++:コンパイラ型→機械語に直接変換するため、実行速度が早い testcounter 合計 - 今日 - 昨日 -
  • オーバーロード
    ... // キャラクタークラス class Character{ private //【メンバ変数】 std string name;// 名前 int HP;// 体力 int STR;// 攻撃力 public //【メンバ関数】 Character(std string name, int HP, int STR);// コンストラクタ ~Character();// デストラクタ // ダメージ関数(オーバーロード:ダメージ数のみ得る) void Damage(int damage); // ダメージ関数(オーバーロード:誰が攻撃したかも得る) void Damage(int damage, std string attacker); void Draw_Status();// ステータス表示 //【ゲッター】 std string GetName(); in...
  • 静的メンバと定数
    ...メンバ変数です。 クラス間変数とも呼びます。 静的メンバ変数はクラスのインスタンスを何個生成しても、必ず一つしか存在しない変数です。 以下のプログラムを書いて試してみましょう。 Sample.h #include iostream class Sample{ public   static int s_num;   int num;   Sample();   void dispNum();   void addNum(); }; Sample.cpp #include Sample.h using namespace std; int Sample s_num=0; Sample Sample(){   num=0; } void Sample dispNum(){   cout num , main.c...
  • メニュー
    ... 文字列 名前空間 クラス オブジェクト アクセス制御 オブジェクトポインタ,newとdelete オーバーロード 継承 Protected オーバーライド ポリモーフィズム 純粋仮想関数 静的メンバと定数 vector vector その他 リンク コメント・問い合わせ 講師用ページ Test_Page 更新履歴 取得中です。
  • トップページ
    ...空間 第二回 クラス オブジェクト 第三回 アクセス制御 第四回 オーバーロード 第五回 継承 Protected オーバーライド 第六回 ポリモーフィズム 仮想関数 第七回 静的メンバと定数 第八回 vector testcounter 合計 - 今日 - 昨日 - 2022-06-10 16 17 30 (Fri)
  • source_test
    ...#123; //入力クラスのインスタンスを生成 for(int i=0; i CONTROL_NUM; i++){ control[i] = new Input(); } printf("\nCreate Phase"); } Phase ~Phase(void){ //入力クラスのインスタンスを削除 for(int i=0; i CONTROL_NUM; i++){ delete control[i]; } printf("\nDelete Phase"); }   Phase* Phase loop(){ ...
  • vector
    ...g をはじめ、独自のクラスやポインタ型でもOK 要素の追加 末尾への追加 ベクター.push_back(オブジェクト); ※以下   と   の内側にスペースが有るのはWikiのタグ認識回避のためであり、実際はスペースを開ける必要はない vector string v; v.push_back( Hello ); v.push_back( world ); v.push_back( !! ); 要素の削除 pop_back 末尾の要素を削除します。 vector int v{0, 1, 2, 3, 4}; v.pop_back(); // 末尾データ(この場合は 4)を削除 erase 任意の場所を削除します。 任意の位置の要素を一つだけ削除 vector int v{0, 1, 2, 3, 4}; v.erase(v....
  • switch文
    前回のページでは if文による分岐を説明しました。 今回は、 switch文について説明します。 switch文 switch文も、if文と同じ分岐の命令です。 同じ分岐といっても書き方が if文とはだいぶ異なります。 if文との違いを使いながら確認していきましょう。 int num = 0; printf("数値を入力してください。\n"); scanf_s("%d", num); switch(num){ case 0 //numが0だったとき printf("0です。\n"); break; case 1 //numが1だったとき printf("1です。\n"); break; case 2 //numが2だったとき printf("2です。\n"...
  • while文
    みなさんこんにちは、今回はループというものについて説明します。 ループとは同じことを繰り返すことです。 しかし、プログラム上でループを作った場合は、何回か繰り返したところで終わるようにします。 そうしないと「無限ループ」に陥ってしまいエラーとなります。 while文 C言語でループを作る命令は2つあります。 for文 と while文 です。先に while から説明します。 まずは使ってみましょう。 int i = 0; // ループ数 while(i 10){ // iが10よりも小さい間はループ printf("%d\n",i); // iがいくつなのか表示 i++; // iに1ずつ足していく } while と書いた次の ( ) にループの続く条件を書きます。 上の例では (i 10) と書いてあります。 ループの回...
  • @wiki全体から「クラス」で調べる

更新順にページ一覧表示 | 作成順にページ一覧表示 | ページ名順にページ一覧表示 | wiki内検索

目安箱バナー