我有一个两部分的问题。首先,我了解 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;
}
我想做的实际上是使这项工作,即我想在一个类中定义一个变量,该变量在每个实例化中都是私有的(这是我的第二个问题)。由于上面的代码片段似乎没有实现这一点,是否有一种解决方法可以用来创建单个对象私有的数据?谢谢!
编辑:
确实,我还在学习 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() 方法返回福特或本田的里程,这取决于我想要什么?