通過派生類來進行功能擴充套件是基本的物件導向的方式,這種方式大如下:
class base
virtual void fun()
};class derive:public base
這種方式下,基類通過宣告虛函式,讓派生類來覆蓋,最後通過多型來實現擴充套件功能。這種方式的最大的缺點是基類的編寫者一般很難確定虛函式的功能究竟要實現到什麼程度,如果有一天突然發現乙個虛函式的功能要進行擴張(或收縮),那麼所有從這個基類派生的類都要進行編譯。這種方式的另乙個缺憾是。功能的擴充套件不能在執行時設定。
通過組合方式來為類的功能擴充套件留下餘地的方式,要比通過繼承的方式在耦合方面要鬆的多。就是把上面的虛函式所要委託給乙個其它的類。這種方式大體如下:
class action
};class exaction:public action
};void setactoin( action* action_)
private:
action* paction;
通過函式指標成員方式,可以提高效率。這種方式大體如下:
virtual void fun()
private:
fun pfun;
通過為類預留乙個成員模板函式,而為類的使用者留下擴充套件的餘地。這種方式簡捷、幹練。遺憾的是這種方式不能用在動態方面上。這種方式大體如下:
};template < >
};詳見《c++程式設計就思維》。
原部落格:
C 類功能擴充套件預留五招
通過派生類來進行功能擴充套件是基本的物件導向的方式,這種方式大如下 class base virtual void fun class derive public base 這種方式下,基類通過宣告虛函式,讓派生類來覆蓋,最後通過多型來實現擴充套件功能。這種方式的最大的缺點是基類的編寫者一般很難確定...
C 類功能擴充套件預留五招
第一招虛函式 通過派生類來進行功能擴充套件是基本的物件導向的方式,這種方式大如下 class base virtual void fun class derive public base 這種方式下,基類通過宣告虛函式,讓派生類來覆蓋,最後通過多型來實現擴充套件功能。這種方式的最大的缺點是基類的編寫...
Java String類擴充套件功能實現
string類擴充套件功能實現 public class strings else string str1 newstring a return str1 將已有字串填充為規定長度,如果已有字串超過這個長度則返回這個字串 字元填充於字串前 例如 abc a 5 aaabc abc a 3 abc p...