Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Cpp chap.10

Avatar for Iseya Iseya
April 08, 2018

Cpp chap.10

Avatar for Iseya

Iseya

April 08, 2018

More Decks by Iseya

Other Decks in Programming

Transcript

  1. クラスの概要 2 ・クラスとは いろいろな変数や関数をオブジェクトとしてまとめる事ができるもの。 C++のように、オブジェクトを用いるプログラム言語のことを、 オブジェクト指向の言語ということもある。 他には、Java や Objective-C などがある。

    ・クラスの使い方 クラスを作り、オブジェクトを作って、各メンバにアクセスする。 例えば、Statusクラスを作って、mob1,mob2 というオブジェクトを作り、 mob1やmob2のオブジェクトの中のstrongという変数だったり、 showStrong() という関数にアクセスする。 Q.構造体は? A.知らない子ですね ※クラス ≠ オブジェクト ※クラス ≒ 型
  2. クラスの宣言 3 class クラス名{ アクセス指定子: 変数や関数の宣言 ︙ }; ・クラスの宣言 ・メンバ関数の定義(クラスの

    外) 型名 クラス名::メンバ関数名(引数){ 「処理」 } ※アクセス指定子は後述 ・説明 クラス内で宣言や定義されたものを メンバという。 また、その中で定義や宣言された 変数…メンバ変数 関数…メンバ関数 という。 メンバ ・メンバ関数の定義(クラスの 中) 型名 メンバ関数名(引数){ 「処理」 } ※クラスの中で定義する場合、普通の関数と同じ ※クラスの中で定義した関数は、強制的にインライン関数になる。 ← ; を忘れない ↓通常は、こっちを使う
  3. メンバへのアクセス 4 ・構文 オブジェクト名 .メンバ名 #include<iostream> using namespace std; class

    Status { public: int strong; void showStrong(); }; void Status::showStrong() { cout << "私の戦闘力は" << strong << endl; } int main() { Status freeza; freeza.strong = 530000; freeza.showStrong(); return 0; } 私の戦闘力は530000↓ ・実行結果 ←オブジェクトの作成 ←メンバ変数へのアクセス ←メンバ関数へのアクセス ←アクセス指定子はpublicにしておく ←メンバ変数の定義 ←メンバ関数の宣言 メンバ関数の定義 ※この.を ドット演算子という
  4. アクセス指定子 5 ・アクセス指定子 これをつけることによって、 クラスの中からしか、アクセスできないメンバと クラスの外からでも、アクセスできる メンバを作成できる。 ・アクセス指定子の種類 public …

    クラスの外からでもメンバに「アクセス可能」 private … そのクラスの外からメンバへの「アクセス不可」 「アクセス可能」… オブジェクト名.メンバ というのが行える。 「アクセス不可」… オブジェクト名.メンバ というのが行えない。 ※public「公共の」 private「私有の」
  5. アクセス指定子の利用① 6 #include<iostream> using namespace std; class square { private:

    int tate; int yoko; public: int getArea() { return tate*yoko; }; void setTateYoko(int, int); }; void square::setTateYoko(int t, int y) { if (t > 0 && y > 0) { tate = t; yoko = y; } else cout << "error!!" << endl; } int main() { square box; box.setTateYoko(10, 5); cout << "面積:" << box.getArea() << endl; box.setTateYoko(-1, 3); cout << "面積:" << box.getArea() << endl; return 0; } 面積を計算し、 ↓それを返す ・説明 縦と横の長さは正の値しかとらないので、 負の値があるとき、"error!!"と表示。 ・実行結果 面積:50 error!! 面積:50 負の数があるので、 初期化を行わない Ⅰ Ⅱ
  6. コンストラクタの基本① 8 ・コンストラクタ オブジェクトが作成されると自動的に呼び出されるメンバ関数。 オブジェクトの作成と同時に呼び出されることから、 普通の関数と違い、戻り値を持たない(voidとすら書かない)。 メンバ変数の初期化を行うためによく用いられる。 ・構文(宣言と定義が別々) class クラス名{

    public: ︙ クラス名(引数の型); ︙ }; クラス名::クラス名(引数){ 処理 } ←public でないと呼び出せない ↓この関数がコンストラクタ 戻り値の型なし ・構文(宣言と定義を同時) class クラス名{ public: ︙ クラス名(引数){ 処理 }; ︙ }; ※こっちの場合、 コンストラクタはインライン関数になる ※引数はなくても良い。