【发布时间】:2016-12-14 01:06:14
【问题描述】:
如果我在基类中声明多个变量,它们将在每个派生类中定义,对吗?我只想为所有派生类拥有一次基类中的变量。示例:
class Base{
public:
virtual ~Base();
protected:
Base();
int fileIndex;
};
class DerivedA : public Base{
public:
DerivedA();
virtual ~DerivedA();
void DoSth(); //using fileIndex
};
class DerivedB : public Base{
public:
DerivedB();
virtual ~DerivedB();
void DoSthDifferent(); //using the same fileIndex
};
我该怎么做?
【问题讨论】:
-
你已经做到了!可能重复:Private and Protected Members
-
当您说希望所有派生类使用相同的 fileIndex 时,您的实际意思是什么。到目前为止,所有答案都将其理解为所有 Base,无论它们是否使用继承,都应该使用相同的底层 fileIndex 值。但是对于这种解释,您的示例似乎过于复杂。
-
是的,您的意思是您只想在基础中定义这些成员一次,但在每个实例中存储单独的副本(包括派生 - 沼泽标准继承),还是执行您是否希望所有实例共享相同的成员 (
static)?我建议遵循以下标志描述:“请澄清您的具体问题或添加其他详细信息以准确突出您需要什么。正如目前所写的那样,很难准确说出您在问什么。请参阅如何询问页面帮助澄清这个问题。” -
我希望所有实例都使用相同的成员(静态)。只有一个文件索引。我想确保所有派生对象都使用基类中的值,一旦定义。
标签: c++ inheritance derived-class