1 名前空間#
名前空間は異なるライブラリ内の同じ名前の関数、クラス、変数などを区別するための追加情報として機能し、本質的に名前空間は範囲を定義します。
1.1 名前空間の定義#
キーワードnamespaceを使用し、その後に名前空間の名前を指定します。
namespace ns_name
{
//code
}
その名前空間内の関数や変数などを呼び出すには、次のようにします:
ns_name::code;
2 クラス#
クラスを定義するにはキーワードclassが必要で、その後にクラスの名前を指定します。クラスの本体は一対の波括弧内に含まれ、メンバー変数とメンバー関数が含まれます。
2.1 データメンバーへのアクセス#
.
を使用してクラス内の変数にアクセスします。
2.2 クラスアクセス修飾子#
データのカプセル化はオブジェクト指向プログラミングの重要な特徴の一つであり、関数がクラス内部のメンバーに直接アクセスするのを防ぎます。クラスメンバーへのアクセス制限は、クラス本体内で各領域にpublic、private、protected
のマークを付けることで指定されます。メンバーとクラスのデフォルトのアクセス修飾子はprivate
です。
2.2.1 public#
公開メンバー変数は、プログラム内でメンバー関数を使用せずに値を設定および取得できます。
2.2.2 private#
プライベートメンバーはクラスの外部からはアクセスできず、クラスと友元関数のみがプライベートメンバーにアクセスできます。
デフォルトでは、クラスのすべてのメンバーはプライベートです。
実際の操作では、一般的にプライベート領域でデータを定義し、パブリック領域で関連する関数を定義することで、クラスの外部からもデータにアクセスできるようにします。
2.2.3 protected#
protected メンバーは private メンバーに似ていますが、protected メンバーは派生子クラスからアクセス可能です。
2.2.4 継承における特徴#
- privateメンバーは本クラスのメンバーと友元のみがアクセスでき、派生クラスからはアクセスできません
- protectedメンバーは派生クラスからアクセスできます