引用: Effective C++ 第3版
Personをインタフェースクラスにすると、次のようになるでしょう。
class Person {
public:
virtual ~Person();
virtual std::string name() const = 0;
virtual std::string birthDate() const = 0;
virtual std::string address() const = 0;
...
}
純粋仮想関数を持つクラスのオブジェクトを生成することはできないので、Personを使うときには、そのポインタか参照を使うことになります。
...
また、インタフェースクラスを使うには、オブジェクトを生成しなければなりません。そのために、派生クラスのオブジェクトを生成する関数がよく使われます。そのような関数は、一般にファクトリ関数(13項を参照)とか仮想コンストラクタと呼ばれます。これはインタフェースクラスのインタフェースを持つオブジェクトを動的に生成し、そのポインタ(...)を戻す関数です。
上の実装例で"= 0"は純粋仮想関数。
ローベルのC++教室