在下面的代碼中,我們有兩個類,每個類中有兩個方法:一個是虛擬的,另一個是非虛擬的。我不明白當我運行這個代碼時會發生什麼。在哪種情況下以及哪個功能(1,2,3)系統使用虛擬或非虛擬功能?對於所有情況,我在評論中寫下了代碼運行時獲得的內容。我有點混亂...在此先感謝相同類中的虛擬方法vs非虛擬方法
class cFather {
public:
void print() { cout<<」 1) cFather\n」;}
virtual void print() const { cout<<」 2) cFather\n」};
};
class cSon : public cFather {
public:
virtual void print() { cout<<」 3) der\n」; }
void print() const { cout<<」 4) der\n」; }
};
void function1 (const cFather& o)
{
o.print();
}
void function2 (const cFather o)
{
o.print();
}
void function3(cFather o)
{
o.print();
}
A)
void main ()
{ cFather o;
function3(o); }
// 1) CFather
B)
void main ()
{ cSon t;
function1(t); }
// 4) der
C)
void main ()
{ cFather * o;
cSon t;
o = &t;
o->print(); }
// 1) cFather
d)
void main ()
{ cFather o;
function2(o); }
// 2) cFather
這不是「唯一區別」;一個是const,另一個不是。 –
哪種行爲,具體來說,你不明白? –
你是對的我修改了它! – Laura