我可以在基类中使用virtual
函数吗,我的某些派生类确实具有该函数,而有些则没有。
class A{
virtual void Dosomething();
};
class B : public A{
void Dosomething();
};
class C : public A{
//Does not have Dosomething() function.
};
答案 0 :(得分:1)
派生类不必实现所有虚函数,除非它是纯虚函数。即使在这种情况下,也只有在您尝试实例化派生类(而不实现纯虚拟函数)时,才会导致错误。
colorBlindBlack8 <- c("#000000", "#E69F00", "#56B4E9", "#009E73",
"#F0E442", "#0072B2", "#D55E00", "#CC79A7")
pie(rep(1, 8), col = colorBlindBlack8)
答案 1 :(得分:1)
我认为您可能获得的最接近的结果是,在派生类中更改access修饰符,如下所示。
但是,我认为这是不好的做法,因为它违反了Liskov的替代原则。
如果遇到这种情况,则可能需要重新考虑类设计。
var fenway = {lat: 42.345573, lng: -71.098326};
var panorama = new google.maps.StreetViewPanorama(
document.getElementById('pano'), {
position: fenway,
pov: {
heading: 160,
pitch: 10
},
clickToGo : false,
panControl: false
});
答案 2 :(得分:1)
摘自我的一本c ++教科书:
一旦一个函数被声明为虚函数,即使在派生类重写该函数时未将其显式声明为虚函数,该函数也始终在继承过程中保持虚状态。 当派生类选择不覆盖它时,它仅继承其基类的虚函数。
因此,您的问题的答案是否。c类将使用A类的虚函数。