我不知道是否可能,但有一个简单的例子我应该实现: 我必须使用第一个纯虚函数,因为有很多需要它的派生类。但是一些派生类也需要第二个参数。
有基类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
}
是否可以重载纯虚函数?或者在最坏的情况下,在需要两个参数的少数类中禁用该功能?
我正在学习,抱歉愚蠢的问题..
答案 0 :(得分:2)
可以使虚拟功能过载。调用哪一个是基于函数参数的数量(和类型)。请注意,纯虚函数('= 0')强制要求所有派生类实现基类的所有纯虚函数(或者自身也是抽象的,将需求传递给更多派生类)。
如果你可以修改第一个声明的签名/正文,你可以只使用一个函数,但是:
virtual void move(Road ^ road, Parameter2 ^ parameter2 = 0) = 0;
,如果在调用时没有明确提供,则将默认参数分配给parameter2
。当parameter2
的值为0时,逻辑与第一种情况相同(无parameter2
)。