为什么内联函数,构造函数,静态成员函数不能为virtual函数?
- 内联函数:在编译时期展开,而虚函数的特性是运行时才动态联编,所以两者矛盾
- 构造函数:用来创建一个新的对象,而虚函数的运行是建立在对象的基础上,在构造函数执行时,对象尚未形成,所以不能将构造函数定义为虚函数。
- 静态成员函数:属于一个类而非某一对象,没有this指针,它无法进行对象的判别
- inline和virtual不会同时起作用。带virtual的函数在不需要动态绑定调用的时候,就可以inline。
本文解释了为什么内联函数、构造函数及静态成员函数不能被声明为虚函数。内联函数在编译期间展开,与虚函数运行期动态绑定的特性相冲突;构造函数用于创建新对象,在其执行时对象尚未成形,故不能为虚函数;静态成员函数不属于特定对象,无法进行对象判别。
- 内联函数:在编译时期展开,而虚函数的特性是运行时才动态联编,所以两者矛盾
- 构造函数:用来创建一个新的对象,而虚函数的运行是建立在对象的基础上,在构造函数执行时,对象尚未形成,所以不能将构造函数定义为虚函数。
- 静态成员函数:属于一个类而非某一对象,没有this指针,它无法进行对象的判别
- inline和virtual不会同时起作用。带virtual的函数在不需要动态绑定调用的时候,就可以inline。
3023

被折叠的 条评论
为什么被折叠?