用Java寫回調函數時,用interface可以很方便的聲明和實現回調接口。
c++聲明回調接口可以聲明一個純虛類。
什麼是純虛類?
答:純虛類就是一個只有聲明沒有實現的類。
如
class aInterFace
{
virtual void fun() = 0;
}
注意:virtual void fun() = 0;是聲明fun爲純虛函數。如果沒有=0,則fun只是一個虛函數,也就是說
class aInterFace
{
virtual void fun() ;
}這個類就不能叫純虛類。
那麼
class aInterFace
{
virtual void fun() ;
}(不寫實現時,錯誤聲明方法)
和
class aInterFace
{
virtual void fun() = 0;
}
有什麼區別呢?(目前小生只遇到了下面這個問題,所以也只能談這麼多。)在一個.h文件中聲明一個虛類而不是純虛類,虛函數需要有實現,否則在link時會出現“unresolved external "xxx(函數名)"”的錯誤提示。
修改方法:
虛類如果不寫實現,按下面的方法聲明時,就不會有上述錯誤
class aInterFace
{
virtual void fun() {};
}(不寫實現時,正確聲明方法)