2011-11-05 27 views
0

在我開始之前讓我問在objective-c 2.0中你可以有一個基類指針引用一個子類對象嗎?遲綁定和objective-c 2.0

如果是這樣,在Objective-C中有類似於C++虛擬成員函數的東西。

例如,如果從基類指針調用子類對象,它會調用子類方法(它正確地重寫基類方法)?它會像Java那樣被強迫嗎?或者程序員是否可以控制它?

編輯:有可能將任何指針類型分配給另一個,限制是什麼?例如: 你能說

子類* S = ... 基類* B = S

,或者可以只被分配做了什麼?

回答

1

你可以有一個基類指針保存到子類實例地址的值。所以

Subclass s* = /* get an object instance */ 
Baseclass b* = s; 

是可能的(這不必在初始化期間)。沒有限制。

類似功能的「虛擬方法」就像Java一樣,所以每個方法都是虛擬的,因此您無法控制它(例如始終調用子類方法)。實際上,發送給對象的消息具有後期綁定的功能。

請參閱Implement a pure virtual method in Objective-C

+0

不是純粹的虛擬方法,只是虛擬的我打算 – rubixibuc