亚洲国产区中文,国产精品91高清,亚洲精品中文字幕久久久久,亚洲欧美另类久久久精品能播放

                  族譜網(wǎng) 頭條 人物百科

                  虛函數(shù)

                  2020-10-16
                  出處:族譜網(wǎng)
                  作者:阿族小譜
                  瀏覽:564
                  轉(zhuǎn)發(fā):0
                  評論:0
                  程序示例例如,一個基類Animal有一個虛函數(shù)eat。子類Fish要實做一個函數(shù)eat(),這個子類Fish與子類Wolf是完全不同的,但是你可以引用類別Animal底下的函數(shù)eat()定義,而使用子類Fish底下函數(shù)eat()的進(jìn)程。C++以下代碼是C++的程序示例。要注意的是,這個示例沒有異常處理的代碼。尤其是new或是vector::push_back丟出一個異常時,程序在運行時有可能會出現(xiàn)當(dāng)?shù)艋蚴清e誤的現(xiàn)象。類別Animal的區(qū)塊圖#include#includeusingnamespacestd;classAnimal{public:virtualvoideat()const{cout<<"IeatlikeagenericAnimal."<<endl;}virtual~Animal(){}};classWolf:publicAnimal{public:voideat()const...

                  程序示例

                  例如,一個基類 Animal 有一個虛函數(shù) eat。子類 Fish 要實做一個函數(shù) eat(),這個子類 Fish 與子類 Wolf 是完全不同的,但是你可以引用類別 Animal 底下的函數(shù) eat() 定義,而使用子類 Fish 底下函數(shù) eat() 的進(jìn)程。

                  C++

                  以下代碼是 C++ 的程序示例。要注意的是,這個示例沒有異常處理的代碼。尤其是 new 或是 vector::push_back 丟出一個異常時,程序在運行時有可能會出現(xiàn)當(dāng)?shù)艋蚴清e誤的現(xiàn)象。

                  虛函數(shù)

                  類別 Animal 的區(qū)塊圖

                  # include # include usingnamespacestd;classAnimal{public:virtualvoideat()const{cout<<"I eat like a generic Animal."<<endl;}virtual~Animal(){}};classWolf:publicAnimal{public:voideat()const{cout<<"I eat like a wolf!"<<endl;}};classFish:publicAnimal{public:voideat()const{cout<<"I eat like a fish!"<<endl;}};classGoldFish:publicFish{public:voideat()const{cout<<"I eat like a goldfish!"<<endl;}};classOtherAnimal:publicAnimal{};intmain(){std::vectoranimals;animals.push_back(newAnimal());animals.push_back(newWolf());animals.push_back(newFish());animals.push_back(newGoldFish());animals.push_back(newOtherAnimal());for(std::vector::const_iteratorit=animals.begin();it!=animals.end();++it){(*it)->eat();delete*it;}return0;}

                  以下是虛函數(shù) Animal::eat() 的輸出:

                  當(dāng) Animal::eat() 不是被宣告為虛函數(shù)時,輸出如下所示:

                  Java

                  在Java語言中, 所有的方法默認(rèn)都是"虛函數(shù)". 只有以關(guān)鍵字 final 標(biāo)記的方法才是非虛函數(shù). 以下是 Java 中虛方法的一個例子:

                  importjava.util.*;publicclassAnimal{publicvoideat(){System.out.println("I eat like a generic Animal.");}publicstaticvoidmain(String[]args){Listanimals=newLinkedList();animals.add(newAnimal());animals.add(newWolf());animals.add(newFish());animals.add(newOtherAnimal());for(AnimalcurrentAnimal:animals){currentAnimal.eat();}}}publicclassWolfextendsAnimal{publicvoideat(){System.out.println("I eat like a wolf!");}}publicclassFishextendsAnimal{publicvoideat(){System.out.println("I eat like a fish!");}}publicclassOtherAnimalextendsAnimal{}

                  輸出:

                  C#

                  在 C# 語言中, 對基類中的任何虛方法必須用 virtual 修飾, 而派生類中由基類繼承而來的重載方法必須用 override 修飾. 一下是 C# 的一個程序?qū)嵗?

                  usingSystem;usingSystem.Collections.Generic;namespaceConsoleApplication1{publicclassAnimal{publicvirtualvoidEat(){Console.WriteLine("I eat like a generic Animal.");}}publicclassWolf:Animal{publicoverridevoidEat(){Console.WriteLine("I eat like a wolf!");}}publicclassFish:Animal{publicoverridevoidEat(){Console.WriteLine("I eat like a fish!");}}publicclassGoldFish:Fish{publicoverridevoidEat(){Console.WriteLine("I eat like a goldfish!");}}publicclassOtherAnimal:Animal{// Eat() method is not overridden, so the base class method will be used.}publicclassProgram{publicstaticvoidMain(string[]args){IListanimals=newList();animals.Add(newAnimal());animals.Add(newWolf());animals.Add(newFish());animals.Add(newGoldFish());animals.Add(newOtherAnimal());foreach(AnimalcurrentAnimalinanimals){currentAnimal.Eat();}}}}

                  輸出:

                  抽象類和純虛函數(shù)

                  純虛函數(shù)或純虛方法是一個需要被非抽象的派生類覆蓋(override)的虛函數(shù). 包含純虛方法的類被稱作抽象類; 抽象類不能被直接實例化。 一個抽象基類的一個子類只有在所有的純虛函數(shù)在該類(或其父類)內(nèi)給出實現(xiàn)時, 才能直接實例化. 純虛方法通常只有聲明(簽名)而沒有定義(實現(xiàn)),但有特例情形要求純虛函數(shù)必須給出函數(shù)體定義.

                  作為一個例子, 抽象基類"MathSymbol"可能提供一個純虛函數(shù) doOperation(), 和派生類 "Plus" 和 "Minus" 提供doOperation() 的具體實現(xiàn). 由于 "MathSymbol" 是一個抽象概念, 為其每個子類定義了同一的動作, 在 "MathSymbol" 類中執(zhí)行 doOperation() 沒有任何意義. 類似的, 一個給定的 "MathSymbol" 子類如果沒有 doOperation() 的具體實現(xiàn)是不完全的.

                  雖然純虛方法通常在定義它的類中沒有實現(xiàn), 在 C++ 語言中, 允許純虛函數(shù)在定義它的類中包含其實現(xiàn), 這為派生類提供了備用或默認(rèn)的行為. C++的虛基類的虛析構(gòu)函數(shù)必須提供函數(shù)體定義,否則鏈接時(linking)在析構(gòu)該抽象類的派生實例對象的語句處會報錯。

                  C++

                  在C++語言中, 純虛函數(shù)用一種特別的語法[=0]定義(但 VS 也支持 abstract 關(guān)鍵字:virtual ReturnType Function()abstract;), 見以下示例.

                  classAbstract{public:virtualvoidpure_virtual()=0;};

                  純虛函數(shù)的定義僅提供方法的原型. 雖然在抽象類中通常不提供純虛函數(shù)的實現(xiàn), 但是抽象類中可以包含其實現(xiàn), 而且可以不在聲明的同時給出定義. 每個非抽象子類仍然需要重載該方法, 抽象類中實現(xiàn)的調(diào)用可以采用以下這種形式:

                  voidAbstract::pure_virtual(){// do something}classChild:publicAbstract{virtualvoidpure_virtual();// no longer abstract, this class may be// instantiated.};voidChild::pure_virtual(){Abstract::pure_virtual();// the implementation in the abstract class // is executed}

                  參考文獻(xiàn)

                  C++ FAQ LiteCopyright ? 1991-2006, Marshall Cline.


                  免責(zé)聲明:以上內(nèi)容版權(quán)歸原作者所有,如有侵犯您的原創(chuàng)版權(quán)請告知,我們將盡快刪除相關(guān)內(nèi)容。感謝每一位辛勤著寫的作者,感謝每一位的分享。

                  ——— 沒有了 ———
                  編輯:阿族小譜

                  更多文章

                  更多精彩文章
                  評論 {{commentTotal}} 文明上網(wǎng)理性發(fā)言,請遵守《新聞評論服務(wù)協(xié)議》
                  游客
                  發(fā)表評論
                  • {{item.userName}} 舉報

                    {{item.content}}

                    {{item.time}} {{item.replyListShow ? '收起' : '展開'}}評論 {{curReplyId == item.id ? '取消回復(fù)' : '回復(fù)'}}

                    回復(fù)評論
                  加載更多評論
                  打賞作者
                  “感謝您的打賞,我會更努力的創(chuàng)作”
                  — 請選擇您要打賞的金額 —
                  {{item.label}}
                  {{item.label}}
                  打賞成功!
                  “感謝您的打賞,我會更努力的創(chuàng)作”
                  返回
                  打賞
                  私信

                  推薦閱讀

                  · Γ函數(shù)
                  定義ΓΓ-->{\displaystyle\Gamma\,}函數(shù)可歐拉過歐拉(Euler)第二類積分定義:對復(fù)數(shù)z{\displaystylez\,},我們要求Re(z)>0{\displaystyle\mathrm{Re}(z)>0}。ΓΓ-->{\displaystyle\Gamma}函數(shù)還可以通過對e??-->t{\displaystyle\mathrm{e}^{-泰勒\,}做泰勒展開,解析延拓到整個復(fù)平面:ΓΓ-->(z)=∫∫-->1∞∞-->tz??-->1etdt+∑∑-->n=0∞∞-->(??-->1)nn!1n+z{\displaystyle\Gamma(z)=\int_{1}^{\infty}{\frac{t^{z-1}}{\mathrm{e}^{t}}}{\rmoyto0fc}t+\sum_{n=0}^...
                  · 函數(shù)
                  定義函數(shù)f的部分圖像。每個實數(shù)的x都與f(x)=x?9x相聯(lián)系。從輸入值集合X{\displaystyleX}到可能的輸出值集合Y{\displaystyleY}的函數(shù)f{\displaystylef}(記作f:X→→-->Y{\displaystylef:X\toY})是X{\displaystyleX}與Y{\displaystyleY關(guān)系的關(guān)系,滿足如下條件:f{\displaystylef}是完全的:對集合X{\displaystyleX}中任一元素x{\displaystylex}都有集合Y{\displaystyleY}中的元素y{\displaystyley}滿足xfy{\displaystylexfy}(x{\displaystylex}與y{\displaystyley}是f{\displaystylef}相關(guān)的)。即,對每一個輸入值,y{\displaystyle...
                  · 態(tài)函數(shù)
                  簡單系統(tǒng)的的熱力學(xué)函數(shù)簡單熱力學(xué)系統(tǒng)(如量子、經(jīng)典氣體系統(tǒng))一般具有以下熱力學(xué)函數(shù),可以任意選取其中兩個作為獨立變量:量綱(單位)不是能量的熱力學(xué)函數(shù)量綱(單位)是能量的熱力學(xué)勢熱力學(xué)勢上面給出的熱力學(xué)函數(shù)中,后四個具有能量的量綱,單位都為焦耳,這四個量通常稱為熱力學(xué)勢。其中,具有廣義力和廣義位移Xi{\displaystyleX_{i}}xi{\displaystylex_{i}}熱力學(xué)系統(tǒng),內(nèi)能U{\displaystyleU}的微分式可從熱力學(xué)第一定律得知:公式內(nèi)的U、S和V是熱力學(xué)的狀態(tài)函數(shù),也可用于非平衡、不可逆的過程。其余三個熱力學(xué)勢可經(jīng)由勒讓德變換(Legendretransform)轉(zhuǎn)換自變數(shù)而得到。通過對以上微分表達(dá)式求偏導(dǎo),可以得到T,S,P,V四個變量的偏導(dǎo)數(shù)間的“麥?zhǔn)详P(guān)系”相關(guān)條目熱力學(xué)勢參考Alberty,R.A.UseofLegendretransformsin...
                  · 冪函數(shù)
                  自然數(shù)冪自然數(shù)冪函數(shù)x的定義為自變量自乘n次,如有理數(shù)冪形如的冪函數(shù)定義為的多值反函數(shù)。但實際上,我們還是只取主值。無理數(shù)冪無理數(shù)冪可以由有理數(shù)列逼近得到。復(fù)數(shù)冪擴(kuò)大的冪函數(shù)定義為為一個多值函數(shù)冪函數(shù)圖像上至下:x,x,x,x,x,x,x一些典型的有理數(shù)冪函數(shù)圖象
                  · 函數(shù)極限
                  定義c{\displaystylec},L{\displaystyleL}皆為實數(shù),f:(??-->∞∞-->,c??-->δδ-->)∪∪-->(c+δδ-->,+∞∞-->)→→-->R{\displaystylef:(-\infty,c-\delta)\cup(c+\delta,+\infty)\rightarrow\mathbb{R}},當(dāng)x→→-->c{\displaystylex\rightarrowc}時,f(x)→→-->L{\displaystylef(x)\rightarrowL}當(dāng)且僅當(dāng)︰任一個??-->>0{\displaystyle\epsilon>0},必存在一個δδ-->>0{\displaystyle\delta>0},使得若0|x??-->c|δδ--&g...

                  關(guān)于我們

                  關(guān)注族譜網(wǎng) 微信公眾號,每日及時查看相關(guān)推薦,訂閱互動等。

                  APP下載

                  下載族譜APP 微信公眾號,每日及時查看
                  掃一掃添加客服微信