|
|
发表于 2007-5-31 21:56:00
|
显示全部楼层
Re:重写虚函数返回类型有差异,且不是covariant
你的问题一点都不白痴.
为什么不行, 主要是语法上, 你混淆了函数重载, 和虚函数重写.
重载是和返回类型无关的. 因为调用的时候你不能通过返回类型来判断调用那个类.
int print(int)
long print(int)
print(1) //调用那个呢?不能决定
重写就不同,重写是改写基类的定义.
一个函数的定义, 正确的规格是包括 返回类型的.
上面两个print, 是两个不同的定义(虽然不构成重载,所以不能写在一个文件中)
假设你的基类B是 int print(int), 子类D 是 void print(int);
B *he = new D();
int count = he->print(1);
子类对基类的首要原则就是接口兼容,很明显上面的代码就有错误了.
|
|