1

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

有基类 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
}

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

我只是学习,对不起愚蠢的问题..

4

1 回答 1

2

重载虚函数当然是可能的。调用哪一个取决于函数参数的数量(和类型)。请注意,纯虚函数('=0')要求所有派生类实现基类的所有纯虚函数(或者本身也是抽象的,将要求传递给进一步的派生类)。

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

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

parameter2当在调用时没有明确提供时,它将默认参数分配给。然后让逻辑与您的第一个案例(否parameter2)相同,当值为parameter20 时。

于 2012-04-15T11:02:58.847 回答