我有一个基类带有可选的虚拟函数带有参数错误练习的非纯虚函数?
class Base {
virtual void OnlyImplementThisSometimes(int x) {}
};
当我编译此,我收到了关于未使用PARAM X警告。有没有其他方式我应该实现虚函数?我已经重新编写这样的:
class Base {
virtual void OnlyImplementThisSometimes(int x)
{
x = 0;
}
};
我也有这个问题,如果我不小心,我让子类可以实现错误的函数,然后我千万不要因为超载的通知:例如
class Derived : public Base {
void OnlyImplementThisSometimes(int x, int y) { // some code }
};
Derived d;
Base *b = dynamic_cast<Base *>(&d);
b->OnlyImplementThisSometimes(x); // calls the method in the base class
基类方法被调用是因为我用“int y”参数实现派生函数,但没有关于此的警告。这些只是C++常见的陷阱,还是我误解了虚函数?
执行此操作的另一种方法(相同效果)是将内联变量名注释掉,例如:int/* x * /。如果变量名称是描述性的(它应该是),这将有助于读者。 – Nick 2008-11-04 02:32:35
@尼克:我坚信强类型安全,类型描述的目的(并防止争论混乱)。如果你(大多数)这样的代码,参数名称并不重要。 – 2011-12-12 14:00:10
可以编辑最后一段以反映C++中的“override”关键字。 – Rotem 2016-05-29 08:03:57