C++中父類Call子類獨有的方法

偶然想到,如何通過父類來獲取子類的一切內容?答案是否,子類存在的意義就是青出於藍勝於藍,肯定是有其區別其父類的(新加的函數,變量等)。而目前也沒有想到類似的應用場景呢,更多的時候多態Public函數就能夠應對。不過,天無絕人之路,如果通過子類函數返回子類的指針(引用同理)那就相當於拿到子類的對象了,具體如下:

class Son; // 前置聲明 
class Father { 
	public: 
		virtual Son& GetSonInstall(void){
			return *(Son*)NULL;
		}
}; 
class Son :public Father {
	public:
		Son& GetSonInstall(void){
			return *this;
		}
		void Test(void){
			printf("Test\n");
		}
};
int main(void)
{
	Father *pFather = new Son;
	pFather->GetSonInstall().Test();
	while (1);
	return 0;
}

這樣在調用pFather->GetSonInstall().Test();這句的時候相當於拿到Son的對象實例了(this指針),那就理所當然的可以獲取這個類所有的內容了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章