前回の講義での、構造体のポインタ渡しをC++の基本的なクラスで記述した場合のプログラムを再掲する。pのように対象のオブジェクトを明記する必要はない。注意ここのセミコロンを書き忘れないこと。phoneはprivateなので参照できない。オブジェクトのポインタを引数して持つ関数として、機械語が生成されるだけである。用語の解説:C++のプログラムでは、データ構造とデータの処理を、並行しながら記述する。データ構造に対する処理は、メソッド(method)と呼ばれる。データ構造とメソッドを同時に記載したものは、クラス(class)と呼ぶ。そのデータに対し具体的な値や記憶域が割り当てられたものをオブジェクト(object)と呼ぶ。いったアクセス制限を指定できる。メソッド以外からでも参照したり呼出したりできる。オブジェクト指向でプログラムを書くとき、データ構造や関数の処理方法は、クラス内部の設計者しか触れないようにしておけば、その内部を改良することができる。クラスの利用者が勝手に内部データを触っていると、内部設計者が改良するとそのプログラムは動かないものになってしまう。隠蔽化を的確に行うことで、クラスの利用者はクラスの内部構造を触ることができなくなる。一方でクラス設計者はクラスの外部への挙動が変化しないようにクラス内部を修正することに心がければ、クラス利用者への影響がないままクラスの内部を改良できる。このように利用者への影響を最小に、常にプログラムを修正することをリファクタリングと呼ぶ。宣言の中に関数内部の処理を記述していた。関数の記述が長い場合は、書ききれないこういう場合はクラス限定子を使って、メソッドの具体的な処理をクラス宣言の外に記載する。メソッドの実体をクラス宣言の外に記載する。関数と開いたサブルーチンオブジェクト指向では、きわめて簡単な処理な関数を使うことも多い。開いた関数(開いたサブルーチン)を作る指定子である。参照するだけのために関数呼び出しの機械語はムダが多い。参照するだけの機械語が生成される。質問:C言語で開いたサブルーチンを使うためにはどういった機能があるか?コンストラクタとデストラクタプログラムを記述する際、データの初期化忘れや終了処理忘れで、プログラムの誤動作の原因になることが多い。このための機能がコンストラクタ(構築子)とデストラクタ(破壊子)という。コンストラクタは、返り値を記載しない関数でクラス名(仮引数...)の形式で宣言し、オブジェクトの宣言時に初期化を行う処理として呼び出される。形式で宣言し、オブジェクトが不要となる際に、自動的に呼び出し処理が埋め込まれる。引数なしのコンストラクタで初期化される。