虚函数被类的构造析构函数和成员函数调用虚函数的执行过程

2016-02-19 11:08 11 1 收藏

下面图老师小编跟大家分享一个简单易学的虚函数被类的构造析构函数和成员函数调用虚函数的执行过程教程,get新技能是需要行动的,喜欢的朋友赶紧收藏起来学习下吧!

【 tulaoshi.com - 编程语言 】

代码如下:

#includeiostream

class base{
public:

    base()
    {
        std::coutstd::endl;
        std::cout"base constructor"std::endl;
        func1();
        std::coutstd::endl;
    }

    virtual ~base()
    {
        std::coutstd::endl;
        std::cout"base distructor"std::endl;
        func1();
        std::coutstd::endl;
    }
    virtual void func1()
    {
        std::cout"base virtural func1"std::endl;
    }

    void func2()
    {
        std::cout"base member func2"std::endl;
        func1();
        std::coutstd::endl;
    }
};

class derived:public base{
public:
    derived()
    {
        std::coutstd::endl;
        std::cout"derived constructor"std::endl;
        func1();
        std::coutstd::endl;
    }

    virtual ~derived()
    {
        std::coutstd::endl;
        std::cout"derived distructor"std::endl;
        func1();
        std::coutstd::endl;
    }

    virtual void func1()
    {
        std::cout"derived virtual func1"std::endl;
    }

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

};

int main()
{
    base *point = new derived();
    point-func2();
    delete point;
    return 0;
}

会有这样的输出

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)


即使func1是虚函数,在base类和derived的构造函数和析构函数里面,都是调用自己类里面的func1。

而在普通成员函数func2调用func1,就会走虚函数的流程。

来源:https://www.tulaoshi.com/n/20160219/1596617.html

延伸阅读
标签: PHP
/* ------------------------------------------------------------------------------- | = 本文为Haohappy读<<Core PHP Programming | = 中Classes and Objects一章的笔记 | = 翻译为主 个人心得 | = 为避免可能发生的不必要的麻烦请勿转载,谢谢 | = 欢迎批评指正,希望和所有PHP爱好者共同进步! | = PHP5研究中心:...
内容或简介: /** 调用数据库里的一个函数 一个函数本质上一个返回一个结果的存储过程,这个例子示范了怎么调用有in、out和in/out参数的函数 ***********************************/ CallableStatement cs; try { // 调用一个没有参数的函数; 函数返回 a VARCHAR // 预处理callable语句   cs = connection.prepareCall("{? = ca...
C++中的虚函数(一) 作者:aber     虽然很难找到一本不讨论多态性的C++书籍或杂志,但是,大多数这类讨论使多态性和C++虚函数的使用看起来很难。我打算在这篇文章中通过从几个方面和结合一些例子使读者理解在C++中的虚函数实现技术。说明一点,写这篇文章只...
类的多态特性是支持面向对象的语言最主要的特性,有过非面向对象语言开发经历的人,通常对这一章节的内容会觉得不习惯,因为很多人错误的认为,支持类的封装的语言就是支持面向对象的,其实不然, Visual BASIC 6.0 是典型的非面向对象的开发语言,但是它的确是支持类,支持类并不能说明就是支持面向对象,能够解决多态问题的语言,才是真正支...
  类的多态特性是支持面向对象的语言最主要的特性,有过非面向对象语言开发经历的人,通常对这一章节的内容会觉得不习惯,因为很多人错误的认为,支持类的封装的语言就是支持面向对象的,其实不然, !-- frame contents -- !-- /frame contents -- Visual BASIC 6.0 是典型的非面向对象的开发语言,但是它的确是支持类,支...

经验教程

456

收藏

38
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部