假定Derived继承Base,并且Base将下面的函数定义为虚函数;假定Derived打算定义自己的这个虚函数的版本,确定在Derived中哪个声明是错误的,并指出为什么错
a、Base* Base::copy(Base*);
Base* Derived::copy(Derived*);
b、Base* Base::copy(Base*);
Derived* Derived::copy(Base*);
c、ostream& Base::print(int, ostream& = cout );
ostream& Derived::print(int, ostream&);
d、void Base::eval() const;
void Derived::eval();
a错误
c正确
d错误
error C2259: “Derived”: 不能实例化抽象类
可以这样理解:因为const函数可以区分函数的重载,而默认参数不可以区分。