#include <iostream>
using namespace std;
class base
{
public:
void f() {cout << "base" << endl;}
virtual void v() {cout << "base (virtual)" << endl;}
};
class deriv : public base
{
public:
void f() {cout << "deriv" << endl;}
void v() {cout << "deriv (overridden)" << endl;}
};
int main()
{
base b;
b.f();
b.v();
deriv d;
d.f();
d.v();
}
我不明白這兩種方法之間有什麼真正的區別f和v:如果我用另一個名稱替換一個函數,我不是「替換」它嗎?即使我仍然可以通過創建一個base *指針來訪問它,然後將它指向一個deriv對象,我不明白這裏有什麼樣的「乾淨的」C++使用。同名繼承函數和重載虛函數有什麼區別?
當不使用虛擬(意思是可重寫的方法)方法時,有人可以告訴我這是否有合法用途,與使用重寫虛擬方法有什麼不同?
編輯:我很抱歉使用壞的語法與降價,但減價是一個非常糟糕的選擇,它很複雜,相當反覆無常(我更喜歡紡織赫赫)。 EDIT2:對不起,我沒猜錯101010101010101按鈕意味着插入代碼,我通常只是用手工:(做
gokoon,SO使格式化代碼非常容易。標記你的代碼,點擊編輯框上方的'101010'按鈕,就完成了。什麼比這更容易? – sbi 2010-09-21 19:46:49
如果您想開始Markdown和Textile之間的討論,請嘗試[meta SO](http://meta.stackoverflow.com)。 – BoltClock 2010-09-21 19:49:37