我有一個基類帶有可選的虛擬函數帶有參數錯誤練習的非純虛函數?
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