我有个问题:
假设我最初有这些无法更改的类(假设它们是从我正在使用的库中获取的):
class Animal_
{
public:
Animal_();
int getIdA()
{
return idA;
};
string getNameA()
{
return nameA;
}
private:
string nameA;
int idA;
}
class Farm
{
public :
Farm()
{
sizeF=0;
}
Animal_* getAnimal_(int i)
{
return animals_[i];
}
void addAnimal_(Animal_* newAnimal)
{
animals_[sizeF]=newAnimal;
sizeF++;
}
private:
int sizeF;
Animal_* animals_[max];
}
但后来我需要一个类,在其中添加几个字段,所以我这样做了:
class PetStore : public Farm
{
public :
PetStore()
{
idF=0;
};
private:
int idF;
string nameF;
}
但是,我无法初始化我的派生类。我的意思是我做了这个继承,所以我可以添加animals
to my PetStore
但现在自从sizeF
是私人的我该怎么做?我想也许在PetStore
我可以调用的默认构造函数Farm()
...所以有什么想法吗?
的构造函数PetStore
将调用构造函数Farm
;有
你没有办法阻止它。如果你什么都不做(就像你所做的那样),它就会
调用默认构造函数(Farm()
);如果你需要传递参数,
您必须在初始化列表中指定基类:
PetStore::PetStore()
: Farm( neededArgument )
, idF( 0 )
{
}
(类似地,构造函数PetStore
将初始化sizeF
,通过调用构造函数Farm
。类的构造函数always调用构造函数
它的所有基类及其所有成员。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)