クラス

クラスは,オブジェクトを作成するための仕組みです.
いわば,オブジェクトの設計書のようなものだと思ってください.
すなわち,前項で解説したオブジェクトが,どのようなデータを扱い,どのような処理を行うことができるのかということを記述するということになります.
C++でオブジェクト指向プログラミングを行うということは,クラスについては否が応でも知っておかなければいけないわけです.
以下は,クラスの宣言例です.C言語の構造体と少し似た記述方法になります.

はじめに,“class”というキーワードの後にクラス名を記述します.上記の例では“addclass”がクラス名になります.
次に,変数と関数の定義になります.このようにクラス宣言内で宣言される変数はメンバ変数 (member variable)と呼ばれ,
関数はメンバ関数 (member function)と呼ばれます.
ここで,注目していただきたいのは,“private:”“public:”というキーワードです.
これは,メンバ変数やメンバ関数をクラス内部のみからアクセス可能にするか,外部からもアクセス可能にするかを設定できるキーワードです.
“private:”と記述するとコロン(:)以下のメンバ変数やメンバ関数は,そのクラス内のプログラムからしかアクセスできません.
一方,”public:”と記述するとコロン以下のメンバ変数やメンバ関数は,そのクラス内はもちろん,クラス外部のプログラムからもアクセスすることができます.
このようにして,データや処理を状況に応じて保護することで,誤った記述を防ぐことができバグを作りにくくなります.

それでは,実際に動作するプログラムを書いてみましょう.

順番に見ていきましょう.まずはじめの#include <iostream>は,
C++の標準入出力を用いるためのインクルードファイルの読み込みです.
その下がクラスの宣言になります.
そして,その次にクラスのメンバ関数についての記述をしています.
このとき,関数名の前に”addclass::”という記述をつけていますが,
これによってどのクラスのメンバ関数であるかを明示的に指定しています.
この” :: “という記号をスコープ解決演算子 (scope resolution operator)といいます.
クラスの宣言部では,一般的にメンバ関数はプロトタイプ宣言します.
よって,メンバ関数の具体的な処理内容(インプリメンテーション)の記述は,宣言部以外で書くことが多いと思いますが.
このようにどのクラスのメンバ関数なのかを明示する必要があります.

そして,main関数内部ですが,はじめの”addclass adder”という記述が”addclass”というクラスのオブジェクトを生成している部分になります.
この記事の冒頭で,クラスとはオブジェクトの設計書のようなものだと説明したと思います.
作成したクラスを実際に利用するには,メモリを確保して実体化・インスタンス化 (instantiation)する必要があります.
このようにして,ようやくプログラムで利用できるようになるのです.
この例では”adder”というオブジェクト名で実体化されています.
そしてこのオブジェクトのメンバ関数にアクセスするには,ドット演算子” . “を用います.
ちなみに,メンバ変数も同様にアクセスすることができますが,
上記の例では,メンバ変数は全てprivateに設定しているので,

としても外部からはアクセスできないため,コンパイル時にエラーとなります.