クラス
クラスとは、新しいデータ型を作るための仕組み
データと機能をまとめて定義することができる
class
を用いて書く
struct
との違い
C++
におけるstruct
とclass
は1点だけ
デフォルトのアクセス指定子の違い
-
class
はデフォルトのアクセス指定子がprivate
-
struct
はデフォルトのアクセス指定子がpublic
アクセス指定子
アクセス指定子とは、データや関数などへのアクセス許可の範囲のこと
メンバーをprivate
とした場合、クラスの外部からは、そのクラスのそのメンバーを参照する事ができない
クラスの構文
クラスの宣言
class クラス名{
アクセス指定子:
型1 メンバ変数名1
型2 メンバ変数名2
...
戻り値の型1 メンバ関数名1
}
クラスの呼び出し
クラス名 オブジェクト名;
オブジェクト名.メンバ変数 = メンバ変数に設定する値
オブジェクト名.メンバ関数;
クラスを用いたプログラム
#include <iostream>
using namespace std;
class Aisatsu {
public:
string japanese;
string english;
void speak(){
cout << japanese << endl;
cout << english << endl;
}
};
int main() {
Aisatsu aisatsu;
aisatsu.japanese = "こんにちは";
aisatsu.english = "Hello";
aisatsu.speak();
}
こんにちは
Hello
メンバ関数の定義について
メンバ関数の定義の仕方は2つある
- クラスの内部で作る方法
- クラスの外部で作る方法
関数の処理が長くなると可読性が悪くなるので、クラスの外部で定義することが多い
関数を外部で作成する構文
スコープ解決演算子::
を使う
戻り値の型 クラス名::メンバ関数名{
// 処理
}
外部で関数を定義したプログラム
#include <iostream>
using namespace std;
class Aisatsu {
public:
string japanese;
string english;
void speak();
};
void Aisatsu::speak(){
cout << japanese << endl;
cout << english << endl;
}
int main() {
Aisatsu aisatsu;
aisatsu.japanese = "こんにちは";
aisatsu.english = "Hello";
aisatsu.speak();
}
こんにちは
Hello