、(ほとんどの場合)、および初期化子リストを使用する:
#ifndef COUNTRY_H
#define COUNTRY_H
#include <string>
class Country
{
public:
Country(string name, double area, int population);
Country();
string get_name() const;
double get_area()const;
int get_population()const;
double population_density(Country popDensity) const;
void largest_area(double a);
void largest_population(int p);
void most_dense(double d);
private:
string name;
double area;
int population;
};
#endif
との:これは私がこれまで持っているものです。
Country: Country(string _name, double _area, int _population): name(_name),area(_area),population(_population)
{}
新しいコーダーの可読性を向上させるために、引数名がメンバー変数名と正確に一致しないように引数名を変更しました。コンパイラは、イニシャライザリスト内の同一の引数とメンバ名で混同されることはありません。
デフォルトのコンストラクタにはデフォルト値のみを持つ初期化子リストを含めることができます。 name("Transylvania"),area(5),population(42)
ですが、意味のあるデフォルト値を考えるのが難しい場合は、デフォルトのコンストラクタを未定義のままにして、クラスを構築するために値が必要となるようにすることが有効です。