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