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){} };