和菜鳥一起學c++之虛函數

來源:互聯網
上載者:User

 

      清晨的微風總是那麼舒適,午後的陽光卻那麼讓人煩躁,每周末都在公司裡度過,不知道是對是錯。與其一個人在小小的屋子獃著,選擇公司看書是不是明智的選擇呢?抑或找各種同學一起玩?玩?哈哈。始終記得今天所做的將決定3年後的你。成功者都是孤獨的,唯有孤獨,才可以靜下來,唯有靜下來,我們才能更好的去學習,去領悟,去思考,去感受。靜以修身、儉以養德。非淡泊無以明志、非寧靜無以致遠。恩,對於別人的玩樂,不用羨慕,不用嫉妒,更不用恨,書山有路勤為徑、學海無涯苦作舟。更何況,學軟體,學嵌入式的要懂的知識太多太多了,而這個時代是知識經濟時代,唯有不斷學習,不斷創新才可以利於不敗之地。可是這樣是不是又缺少些什麼呢?生活會不會太過單調了呢?也許吧。相信自己選擇的是對的。。

      
感悟了下,然後把上次看的C++的虛函數給記錄下吧。以前上課的時候知道的,後來不用就給忘了,太懶了以前沒有記下來。好了,下面的代碼是根據譚浩強老師的書打出來的。

 

#include <iostream>#include <string>using namespace std; class Student{       public:              Student(int mnum, string mname, float mscore):num(mnum),name(mname),score(mscore){}              ~Student(){}              virtual void display();       protected:              int num;              string name;              float score;     }; void Student::display(){       cout << "num: " << num << endl;       cout << "name: " << name << endl;       cout << "score: " << score << endl;} class Graduate : public Student{       public:              Graduate(int mnum, string mname, float mscore, float mpay):Student(mnum, mname, mscore),pay(mpay){}              ~Graduate(){}              void display();       private:              float pay; }; void Graduate::display(){       cout << "num: " << num << endl;       cout << "name: " << name << endl;       cout << "score: " << score << endl;       cout << "pay :" << pay << endl;} int main(void){       Student stu(1, "aaa", 90);       Graduate gra(2, "bbb", 100, 1000);       Student *pt = &stu;       pt->display();       cout << endl;       pt = &gra;       pt->display();return 0;}

 

        上面的虛函數就是virtual void display();了,先看看如果沒有virual時候的運行結果吧。

         貌似那個Gradute的display函數沒用調用呢。

        再看看加了virual時候的運行結果吧:

        有了,那個pay列印出來了。看來virtual的功能就是這個了。通過這例子,相信應該可以很好地理解了,不過,還得理論點。從實踐到理論可能更加深刻的記住它。

        在同一個類中,我們是不能定義兩個名字相同、參數個數和類型格式都相同的函數的,這叫做什嗎?貌似是重複定義了。但是在繼承中,是可以存在的。不過那樣只會調用基類的函數。而虛函數這個時候上場了,他的作用就是允許在衍生類別中重新定義與基類同名的函數,並且可以通過基類指標或者引用來訪問基類和衍生類別中的同名函數。

        就這樣了,終於記下來了,相信以後忘了看看這裡馬上可以理解了,哈哈哈。。。。。。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.