和菜鸟一起学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时候的运行结果吧。

         貌似那个Gradutedisplay函数没用调用呢。

        再看看加了virual时候的运行结果吧:

        有了,那个pay打印出来了。看来virtual的功能就是这个了。通过这例子,相信应该可以很好地理解了,不过,还得理论点。从实践到理论可能更加深刻的记住它。

        在同一个类中,我们是不能定义两个名字相同、参数个数和类型格式都相同的函数的,这叫做什么?貌似是重复定义了。但是在继承中,是可以存在的。不过那样只会调用基类的函数。而虚函数这个时候上场了,他的作用就是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或者引用来访问基类和派生类中的同名函数。

        就这样了,终于记下来了,相信以后忘了看看这里马上可以理解了,哈哈哈。。。。。。

 

posted on 2012-07-08 18:22  吴一达  阅读(207)  评论(0编辑  收藏  举报

导航