24.1 クラスの記述
/* クラスの概念 */
class // C++で追加されたクラス機能
struct // Cで構造体とよばれていたもの
union // Cで共用体とよばれていたもの
/* クラスメンバ */
特別な意図があるときは、次のメンバをクラスに含ませることもできます。
(1)クラス、構造体、共用体を含むクラス(クラスのネスト)
(2)列挙子
(3)ビットフィールド
(4)型名(typedef)
(5)フレンド
/* クラスの構文 */
class クラス名 {
データメンバの宣言
メンバ関数の宣言
}
/* メンバ関数の宣言と定義 */
省略
/* インスタンスの生成とオブジェクト */
省略
/* クラスメンバの指定 */
省略
24.2 アクセスを制限する
/* アクセス方法 */
public // 公開指定。そのメンバをクラス外から直接利用できる
private // 非公開指定。そのメンバをクラス外から直接は利用できない
protected // 限定公開。「アクセス指定子の機能」後述
/* クラスのカプセル化 */
省略
/* 公開部と非公開部 */
省略
/* publicのデータ */
省略
/* アクセス指定子の機能 */
private(非公開):秘密性が強い
メンバ関数からアクセスできる
一般関数からアクセスできない(非公開)
派生クラスからアクセスできない(非公開)
protected(限定公開):両者の中間
メンバ関数からアクセスできる
一般関数からアクセスできない(非公開)
派生クラスからアクセスできる(公開)
public(公開):公開性が強い
メンバ関数からアクセス出来る
一般関数からアクセスできる(公開)
派生クラスからアクセスできる(公開)
/* デフォルトのアクセス指定子 */
省略
/* クラスの代入 */
Person a b;
a.setname("山田一郎");
a.setage(-10);
b = a; // bにaの内容をコピーする
24.3 クラスメンバの記述
/* メンバ関数のクラススコープ指定 */
省略
/* メンバ関数の内部定義と外部定義 */
省略
/* インラインのメンバ関数 */
省略
/* クラス有効範囲 */
省略
24.4 構造体とクラス
24.5 共用体とクラス
24.6 入れ子のクラス