指向Child类对象的静态指针数组的问题

时间:2017-11-03 01:42:42

标签: c++ arrays pointers

所以我有一个设备类,它是一个抽象类,然后是3个继承它的其他子类

在我的主要内容中,我创建了一个类型为appliance的指针数组

Appliance *InStock[100];

然后我在主

中创建了一个子类对象
InStock[k]= new Oven();

但是当我调用我的一个函数时,它会调用设备虚拟函数而不是我在Oven类中的overiden函数

InStock[k]->WriteData()

哪个调用设备版本而不是烤箱版本

virtual void WriteData() const { cout<< modelNumber<< " "<< serialNumber;}

Oven类中的OverRidden

void Refrigerator::WriteData() {
Appliance::WriteData();
string tempBool= "F";
if (frostFree){
    tempBool="T";
}
cout<< capacity<< " "<< tempBool<< endl;

}

这必须与指针有关,因为当指针应该是烤箱时,指针会认为它是一个设备。

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

在您的代码中,您有两个不同的WriteData函数,一个是const而另一个不是。

const部分实际上是函数签名的一部分,这意味着子类定义了一个新函数而不是覆盖基类函数。这是因为他们的签名不匹配。由于这个编译器不会将它们视为被覆盖。

您同时制作const或&#34;而不是&#34; const调用子类函数。