2 つの質問があります。まず、C++ はクラス レベルのデータ カプセル化のみを提供することを理解しています。つまり、同じクラスのすべてのオブジェクトが互いのプライベート メンバーにアクセスできるということです。この理由は理解していますが、いくつかのリンクを見つけました (つまり、http://www.programmerinterview.com/index.php/c-cplusplus/whats-the-difference-between-a-class-variable-and-an- instance-variable/ ) は、この点と矛盾しているように見え、次のことができることを示唆しています。
class testclass {
private:
// Below would be an instance-level variable, and new memory for it is set aside
// in each object I create of class testclass
int x;
// Below would be a class-level variable, memory is set aside only once no matter
// how many objects of the same class
static int y;
}
私がやりたいことは、実際にこれを機能させることです。つまり、各インスタンス化でプライベートなクラスに変数を定義したいと思います(これは私の 2 番目の質問です)。上記のコード スニペットはこれを達成していないように見えるため、個々のオブジェクトにプライベートなデータを作成するために使用できる回避策はありますか? ありがとうございました!
編集:
確かに、私はまだ OO の基礎を学んでいます。どこにでもある車の例を使って、私がやろうとしていることを示します。それを再考する方法についての提案を歓迎します:
class car {
private:
int mileage;
public:
car(int); // Constructor
void odometer();
};
car::car(int m) {
mileage = m;
}
void car::odometer() {
return mileage;
}
int main(void) {
car ford(10000), honda(20000);
cout<<ford.odometer(); //Returns 20000, since honda constructor overwrites private variable 'mileage'
}
私が望むものに応じて、フォードまたはホンダの走行距離を返すために odometer() メソッドを取得する方法はありますか?