如果兩種方法都被聲明爲虛擬的,那麼被調用的Method1()的兩個實例都不應該是派生類的Method1()?關於虛擬方法的問題
我看到BASE然後派生每次調用。我正在爲面試做一些評估,我想確保我有這個直接。的xD
class BaseClass
{
public:
virtual void Method1() { cout << "Method 1 BASE" << endl; }
};
class DerClass: public BaseClass
{
public:
virtual void Method1() { cout << "Method 1 DERVIED" << endl; }
};
DerClass myClass;
((BaseClass)myClass).Method1();
myClass.Method1();
方法1個BASE
方法1 DERVIED
「如果兩種方法都被聲明爲虛擬的,」 - 派生類中的覆蓋是虛擬的(儘管人們只是爲了清晰起見而將它添加),所以這與問題無關。 – UncleBens 2010-05-05 21:11:26
你正在尋找的演員將是'((BaseClass&)myClass)。Method1();',或者多一點C++:'static_cast(myClass).Method1();' –
GManNickG
2010-05-05 21:14:24
另外,你應該避免使用C風格的類型轉換。 – rlbond 2010-05-05 21:14:26