基類指針在程序運行的時候的確指向的是一個派生類的對象,但指針的類型仍然是基類指針。C++是一種強類型語言,因此不能用基類指針類型的指針直接調用派生類;而且,同一個類可能有多種不同的派生類,因此不知道實際指向的會是哪個派生類。
如果確信是某個派生類的話,可以用這樣的方法來調用:
((CB*)this)->b = 1; (CB為派生類)
或者
(dynamic_cast<CB*>(this))->b = 1;
即首先進行一次指針的強制類型轉換。
注意如果在構造函數中的話,CB的部分現在還是沒有初始化的,因此即使讀出b的數據,也不會是2。因為按照C++的標准,構造函數執行的順序是從基類到派生類。
return *this; 重載 = -= =等運算符時一般返回*this
return this; 指向對象本身的指針