1樓:東坡**站
使用命令
disas namespace::classname::virtualfun**ame()
來檢視classname的乙個虛函式的彙編**!
什麼是虛函式,c++虛函式講解
2樓:千鋒教育
在某基類中宣告為 virtual 並在乙個或多個派生類中被重新定 義的成員函式,用法格式為:virtual 函式返回型別 函式名(參數列) ;實現多型性,通過指向派生類的基類指標或引用,訪問派生類中同名覆蓋成員函式。
虛函式定義:簡單地說,那些被virtual關鍵字修飾的成員函式,就是虛函式。虛函式的作用,用專業術語來解釋就是實現多型性(polymorphi**),多型性是將介面與實現進行分離;用形象的語言來解釋就是實現以共同的方法,但因個體差異,而採用不同的策略。
虛函式的作用:用同乙個呼叫形式,既能呼叫派生類又能呼叫基類的同名函式。
虛函式的使用方法是:
在基類用virtual宣告成員函式為虛函式。這樣就可以在派生類中重新定義此函式,為它賦予新的功能,並能方便地被呼叫。在類外定義虛函式時,不必再加virtual。
在派生類中重新定義此函式,要求函式名、函式型別、函式引數個數和型別全部與基類的虛函式相同,並根據派生類的需要重新定義函式體。c++規定,當乙個成員函式被宣告為虛函式後,其派生類中的同名函式都自動成為虛函式。因此在派生類重新宣告該虛函式時,可以加virtual,也可以不加,但習慣上一般在每一層宣告該函式時都加virtual,使程式更加清晰。
如果在派生類中沒有對基類的虛函式重新定義,則派生類簡單地繼承其直接基類的虛函式。
定義乙個指向基類物件的指標變數,並使它指向同一類族中需要呼叫該函式的物件。
通過該指標變數呼叫此虛函式,此時呼叫的就是指標變數指向的物件的同名函式。通過虛函式與指向基類物件的指標變數的配合使用,就能方便地呼叫同一類族中不同類的同名函式,只要先用基類指標指向即可。如果指標不斷地指向同一類族中不同類的物件,就能不斷地呼叫這些物件中的同名函式。
這就如同前面說的,不斷地告訴計程車司機要去的目的地,然後司機把你送到你要去的地方。
c++什麼時候使用虛函式
3樓:育知同創教育
虛函式就是在基類中被關鍵字virtual說明,並在派生類中重新定義的函式。虛函式的作用是允許在派生類中重新定義與基類同名的函式,並且可以通過基類指標或引用來訪問基類和派生類中的同名函式。
虛函式就是為了讓基類指標(或引用)能訪問派生類中定義的成員。
c++中虛函式如何定義,使用時應該注意什麼?
4樓:千鋒教育
/*--
定義純虛函式介面:virtual void f()=0; //只是提供介面,實現留給繼承類
使用時應注意:子類必須要實現該函式
--*/
#include
using namespace std;
class a
;class b:public a
};void main()
5樓:
虛函式的定義要這樣,virtual 返回型別+函式名(引數);
虛函式呼叫時要注意,在類繼承的時候,子類呼叫的虛函式和父類中虛函式的區別
6樓:匿名使用者
虛函式在宣告時與一般函式的不同地方就是需要新增乙個標誌符virtual,在定義時和普通函式相同。在呼叫時和一般函式的呼叫也是相同的,只不過要注意多型而已。
是不是只有虛函式才能定義為純虛函式,c++語法。
7樓:千鋒教育
你概念有點混淆了,這個virtual void fun()=0; 是純虛函式;virtual void fun(); 是虛函式。它們是有區別的。有純虛函式的類一般都是虛基類,主要用於繼承,讓子類來實現虛函式。
虛函式的作用當然是多型了~~
class base
{public:
void base::fun() {cout<<"base" return 0; } 如果fun 是虛函式顯示什麼,不是虛函式顯示什麼?自己試試 c++中 析構函式中可以呼叫虛函式麼 8樓:育知同創教育 c++中 析構 函式中不可以呼叫虛函式。 effective c++ 中有這樣的描述:同樣的原因也適用於析構過程。一旦派生類析構函式執行,這個物件的派生類資料成員就被視為未定義的值,所以 c++ 就將它們視為不再存在。 c++中派生類在構造時會先呼叫基類的建構函式再呼叫派生類的建構函式,析構時則相反,先呼叫派生類的析構函式再呼叫基類的建構函式。 假設乙個派生類的物件進行析構,首先呼叫了派生類的析構,然後在呼叫基類的析構時,遇到了乙個虛函式,這個時候有兩種選擇:plan a是編譯器呼叫這個虛函式的基類版本,那麼虛函式則失去了執行時呼叫正確版本的意義;plan b是編譯器呼叫這個虛函式的派生類版本,但是此時物件的派生類部分已經完成析構,「資料成員就被視為未定義的值」,這個函式呼叫會導致未知行為。 9樓:回頭的世界 很簡單,你定義乙個虛函式,然後在析構函式中呼叫看看,debug除錯,能執行就證明可以! 自己動手比實踐,比問別人「記住」一些規則,更有效果! 10樓:徐霄沛 是可以的,不過,這樣呼叫沒有什麼意義,不能實現多型。 畫好灰色線條 用蒙版把漸隱的部分蒙住.第二個問題在畫筆缺省裡調整 漸隱 選項.看效果圖 在ps裡,畫漸隱直線的方法是 使用漸變。具體方法是 1 使用矩形選框工 版具,劃一條權直線的選區,如下圖 2 選擇漸變工具,漸變屬性選擇線性漸變,漸變方式選擇前景色到透明。3 拉漸變,如下圖 先畫直線.加蒙版 用... 用摳圖工具把畫布中的影象摳出來新建一層,選擇新建的這個影象層,用移動工具可以拖 像也可按ctrl t鍵自由變換大小而不會移動作為背景層的畫布,用自由變換就可以的,它拉大的只是影象,畫布是拉不大的。雙擊.出現圖層.然後扣出來.也就是把一整幅影象分享開來 扣圖可用魔棒或鋼筆工具 ps cs6把 拖到畫布... photoshop裡面用虛線描邊的步驟 舉例來說,原圖如下 1 點工具欄上的描邊線型型別的下拉列表,選擇虛線型別,設定合適的描邊大小 2 最後效果如圖。在工具欄中有乙個虛線的按鈕,通過這個按鈕可以用來描邊。和實線描邊一樣 先用鋼筆畫好路徑 然後選擇畫筆工具 按f5 把間距拉大一點 你就會看到下面的預...在ps裡面如何畫漸隱的直線,在PS裡面如何畫漸隱的直線
photoshop裡面如何將畫布裡面的影象拉動和拉大,我說的
PHOTOSHOP裡面如何用虛線描邊