0
我有一個由兩部分組成的問題。首先,我明白C++僅提供了類級數據封裝,這意味着同一類的所有對象都可以訪問彼此的私有成員。我知道這樣做的原因,但也發現了一些鏈接這似乎違背了這一點,這意味着我可以做以下(即http://www.programmerinterview.com/index.php/c-cplusplus/whats-the-difference-between-a-class-variable-and-an-instance-variable/):使用C++實例級封裝
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;
}
我想這樣做實際上是使這項工作,即,我想在每個實例(這是我的第二個問題)中私人地定義一個變量類。由於上面的代碼片段似乎沒有達到這個目的,是否有解決方法,我可以使用它來創建私人個別對象的數據?謝謝!
編輯:
的確,我仍然在學習面向對象的基礎知識。我將使用無處不在的汽車示例來展示我想要做的事情,我相信這肯定是一件常見的事情。我歡迎如何重新考慮任何建議:
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'
}
有沒有什麼辦法讓里程錶()方法返回無論是福特或本田的里程,這取決於我想要什麼?
第一個問題是什麼?你爲什麼要保護實例不會訪問彼此的成員變量? – 2013-03-07 17:16:00
'//返回20000,因爲honda構造函數會覆蓋私有變量'mileage''這是完全錯誤的。你確認了嗎?它肯定覆蓋了它自己的*成員,但爲什麼它會碰到其他東西? – GManNickG 2013-03-08 21:18:17