C ++ cli纯虚函数重载(或禁用?)

时间:2012-04-15 10:57:23

标签: c++-cli virtual overloading

我不知道是否可能,但有一个简单的例子我应该实现: 我必须使用第一个纯虚函数,因为有很多需要它的派生类。但是一些派生类也需要第二个参数。

有基类Car:

public ref class Car abstract
{
.....
public:
  virtual void move(Road ^ road) = 0; //I am not allowed to delete this line
  //virtual void move(Road ^ road, Parameter2 ^ parameter2) = 0; //overload
}

是否可以重载纯虚函数?或者在最坏的情况下,在需要两个参数的少数类中禁用该功能?

我正在学习,抱歉愚蠢的问题..

1 个答案:

答案 0 :(得分:2)

可以使虚拟功能过载。调用哪一个是基于函数参数的数量(和类型)。请注意,纯虚函数('= 0')强制要求所有派生类实现基类的所有纯虚函数(或者自身也是抽象的,将需求传递给更多派生类)。

如果你可以修改第一个声明的签名/正文,你可以只使用一个函数,但是:

  virtual void move(Road ^ road, Parameter2 ^ parameter2 = 0) = 0;

,如果在调用时没有明确提供,则将默认参数分配给parameter2。当parameter2的值为0时,逻辑与第一种情况相同(无parameter2)。