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