和菜鸟一起学c++之虚函数
?
????? 清晨的微風總是那么舒適,午后的陽光卻那么讓人煩躁,每周末都在公司里度過,不知道是對是錯。與其一個人在小小的屋子呆著,選擇公司看書是不是明智的選擇呢?抑或找各種同學一起玩?玩?哈哈。始終記得今天所做的將決定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打印出來了??磥?span style="font-family:'Times New Roman';">virtual的功能就是這個了。通過這例子,相信應該可以很好地理解了,不過,還得理論點。從實踐到理論可能更加深刻的記住它。
????????在同一個類中,我們是不能定義兩個名字相同、參數個數和類型格式都相同的函數的,這叫做什么?貌似是重復定義了。但是在繼承中,是可以存在的。不過那樣只會調用基類的函數。而虛函數這個時候上場了,他的作用就是允許在派生類中重新定義與基類同名的函數,并且可以通過基類指針或者引用來訪問基類和派生類中的同名函數。
????????就這樣了,終于記下來了,相信以后忘了看看這里馬上可以理解了,哈哈哈。。。。。。
?
轉載于:https://www.cnblogs.com/wuyida/archive/2012/07/08/6300080.html
總結
以上是生活随笔為你收集整理的和菜鸟一起学c++之虚函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: No error message ava
- 下一篇: 【ios】Storyboard教程