现在的位置: 首页 > 综合 > 正文

inline函数和虚函数的区别

2018年04月01日 ⁄ 综合 ⁄ 共 543字 ⁄ 字号 评论关闭

    inline函数和virtual函数有着本质的区别,inline函数是在程序被编译时就展开,在函数调用处用整个函数体去替换,而virtual函数是在运行期才能够确定如何去调用的,因而inline函数体现的是一种编译期机制,virtual函数体现的是一种运行期机制。因此,内联函数是个静态行为,而虚函数是个动态行为,他们之间是有矛盾的。

    函数的inline属性是在编译时确定的, 然而,virtual的性质则是在运行时确定的,这两个不能同时存在,只能有一个选择,文件中声明inline关键字只是对编译器的建议,编译器是否采纳是编译器的事情。并不否认虚函数也同样可以用inline来修饰,但你必须使用对象来调用,因为对象是没有所谓多态的,多态只面向行为或者方法,但是C++编译器,无法保证一个内联的虚函数只会被对象调用,所以一般来说,编译器将会忽略掉所有的虚函数的内联属性。

    什么函数不能声明为虚函数?一个类中将所有的成员函数都尽可能地设置为虚函数总是有益的。 
    设置虚函数须注意: 
    1、只有类的成员函数才能说明为虚函数; 
    2、静态成员函数不能是虚函数; 
    3、内联函数不能为虚函数; 
    4、构造函数不能是虚函数; 
    5、析构函数可以是虚函数,而且通常声明为虚函数。

抱歉!评论已关闭.