首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

弱弱问下解决方案

2012-02-06 
弱弱问下Which virtual function redeclarations(声明) of the Derived class are correct?a. Base* Base:

弱弱问下
Which virtual function redeclarations(声明) of the Derived class are correct?

  a. Base* Base::copy(Base*);
  Base* Derived::copy(Derived*);
   
  b. Base* Base::copy(Base*);
  Derived* Derived::copy(Base*); //oerrided the base
   
  c. ostream& Base::print(int,ostream&=cout);
  ostream& Derived::print(int,ostream&);
   
  d. void Base::eval() const;
  void Derived::eval();

请大家帮助一下,b在VC60下编译没有通过,其他都编译通过,运行也没有问题,不知道题中的redeclarations具体表示什么含义!谢谢解答!^_^

[解决办法]
b的错误在于: 参数相同,返回值不同。

例如下面的代码
Base * pBase = NULL;
Derived * pDerived = new Derived(...);
pDerived->copy(pBase); // 请问,编译器应该调用哪一个函数呢? Base::copy还是 Derived::copy ?
override 一个函数,必须是参数相同,返回值也相同.
overload 一个函数,则必须参数表不同。
对于参数表相同,返回值不同的声明,编译器无法识别。

redeclaration 从字面意义上看估计是 重新声明 (感觉应该类似于 override)

热点排行