侧边栏壁纸
  • 累计撰写 73 篇文章
  • 累计创建 14 个标签
  • 累计收到 1 条评论
C++

虚函数和纯虚函数

秋山人家
2019-09-04 / 0 评论 / 0 点赞 / 1,596 阅读 / 0 字
温馨提示:
本文最后更新于 2019-09-04,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
class Person
{
public:
    Person()
    {
        cout<<"Person"<<endl;
    }

    virtual ~Person() //如果一个类确定被继承,基类的析构函数需要定 
                      //义为虚函数,否则在析构时会出现只析构基类的 
                      //s情况。
    {
         cout<<"~Person"<<endl;
    }

    virtual void getName() = 0; //Person类存在一个纯虚函数,因而不能实例化
    virtual void getAge() //虚函数,只需要声明基类为虚函数,后续子 
                          //类不管继承多少层,不加virtual,
  			  //同样能够表现出多态性。
    {
        cout<<"Person-age"<<endl;
    }

     void getSex()
    {
         cout<<"Person-sex"<<endl;
    }
};

class Student:public Person
{
public:
    Student()
    {
         cout<<"Stuent"<<endl;
    }

    ~Student()
    {
         cout<<"~Stuent"<<endl;
    }

    void getName()
    {
        cout<<"Stuent-name"<<endl;
    }

    void getAge()
    {
        cout<<"Stuent-age"<<endl;
    }

    void getSex()
    {
        cout<<"Stuent-sex"<<endl;
    }

};

class CollegeStudent:public Student
{
public:

    CollegeStudent()
    {
         cout<<"CollegeStudent"<<endl;
    }

    ~CollegeStudent()
    {
         cout<<"~CollegeStudent"<<endl;
    }

    void getName()
    {
        cout<<"CollegeStudent-name"<<endl;
    }

    void getAge()
    {
        cout<<"CollegeStudent-age"<<endl;
    }

     void getSex()
    {
        cout<<"CollegeStudent-sex"<<endl;
    }
};


int main()
{
    /*
    *构造函数顺序为Person->student->collegeStudent
    *析构函数顺序为~collegeStudent->~student->~Person
    */
    Person* collegeStudent = new CollegeStudent();
    collegeStudent->getName();
    collegeStudent->getAge();
    collegeStudent->getSex();
    delete collegeStudent;
    return 0;
    //输出结果为:(Mac平台输出)
    //@"Person\r\n"
    //@"Stuent\r\n"
    //@"CollegeStudent\r\n"
    //@"CollegeStudent-name\r\n"
    //@"CollegeStudent-age\r\n"
    //@"Person-sex\r\n"
    //@"~CollegeStudent\r\n"
    //@"~Stuent\r\n"
    //@"~Person\r\n"
	
}
0

评论区