如此简单的问题是,如果我有这种情况:
class FooA{
public:
int getID(){
return ID;
}
private:
int generateID(){
//some code that generate unique ID
}
int ID = generateID();
};
class FooB : public FooA{
};
在FooA中初始化的ID也会转到FooB吗?所以对于FooB,我可以使用getID,例如从FooA :: generateID获取值。
答案 0 :(得分:0)
这两个类的每个实例都将重新运行generateID,为每个实例生成唯一值。 不,为父类实例生成的ID不会与为后代实例生成的ID相同,因为它们将具有不同的实例。 是的,后代可以使用或暴露父母的方法。
class FooA{
public:
int getID(){
return ID;
}
private:
int generateID(){
static int i = 0;
return i++;
}
int ID = generateID();
};
class FooB : public FooA{
};
int main() {
// your code goes here
cout << (FooA()).getID() << endl; // 0
cout << (FooA()).getID() << endl; // 1
cout << (FooB()).getID() << endl; // 2
return 0;
}