C++哪些函数不能是虚函数

1. inline是编译时展开,必须有实体;(不考虑不展开的假inline)
 
2. static属于class本身的,也必须有实体;
 
3. 构造函数、复制构造函数。virtual函数基于vtable(内存空间),constructor函数若是是virtual的,调用时也须要根据vtable寻找,可是constructor是virtual的状况下是找不到的,由于constructor本身自己都不存在了,建立不到class的实例,没有实例,class的成员(除了public static/protected static for friend class/functions,其他不管是否virtual)都不能被访问了。
 
4. 模板函数。以下面的代码就是错的。
class A {
    template<typename T>
    virtual void f(T t){}
};
相关文章
相关标签/搜索