> 書中的範例是:
> class X
> {
> public:
> rotate() {X's version of rotate}
> };
> class Z: public X
> {
> public:
> rotate() { Z's version of rotate }
> };
> Z z;
> X datum;
> X *pointer = &z;
> X &reference = z;
> (*pointer).rotate();
作者應該寫的沒有錯(我也覺得是這樣)
原因是 child 可以由 parent 的 class 所接受(point)
所以基本上的值還是 child 的值..
而上面的情況我覺得是 overwriting
當然要是 X 中沒有 rotate 的話
pointer 就不會有這個 member function 了
> 或至少,(*pointer)應該先被執行,而(*pointer)的型別應該是 X。所以
> (*pointer).rotate() 應該 invoke X::rotate()。
如上面回答的 child 可被 parent 接受
> 或者我該問,rotate()到底是不是virtual member function?
我比較喜歡 virtual 的定義是個空 function
所以這裡我認為只是 overwriting
當然可能硬說 virtual member function 我想也沒有錯.
> 這樣說對嗎?還是C++ Spec裡面有別的規定?請不吝指教…
--
│ o ¯\ []----- ║ ║╭══╮ ║ ╭══╮
│ o ▅▇▇▇▆▅▄===============0 ╠══╣╠══╣ ║ ╠══╣
▊◤︻─︻─︻─︻─︻─︻─︻─︻─︻◥█◣╰╮I am bashful..╰═════
(◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎) ║ and i always feel sad...
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ╭╯ 誰來找我哈拉呀 !!!!!
--
* Origin: ★ 交通大學資訊科學系 BBS ★ <bbs.cis.nctu.edu.tw: 140.113.23.3>
> -------------------------------------------------------------------------- <
發信人: EightCloud.bbs@csie.nctu.edu.tw (嵐雲), 看板: Programming
標 題: Re: 深度探索C++物件模型,P.26
發信站: 交大資工鳳凰城資訊站 (Thu Dec 17 09:02:25 1998)
轉信站: Ptt!news.ntu!ctu-gate!news.nctu!news.ee.nctu!alab03.ee.nctu!news.csie.
==> 在 Hala.bbs@cis.nctu.edu.tw (滿足現況...:P) 的文章中提到:
: > Z z;
: > X datum;
: > X *pointer = &z;
: > X &reference = z;
: > (*pointer).rotate();
: 作者應該寫的沒有錯(我也覺得是這樣)
............
: pointer 就不會有這個 member function 了
: > 或至少,(*pointer)應該先被執行,而(*pointer)的型別應該是 X。所以
: > (*pointer).rotate() 應該 invoke X::rotate()。
有疑問, 寫個程式去測測看不就知道了... (改個幾行程式....)
不是 virtual funcition,
執行的是 X::rotate,
是 virtual function,
則執行的是 Z::rotate
: 如上面回答的 child 可被 parent 接受
: > 或者我該問,rotate()到底是不是virtual member function?
: 我比較喜歡 virtual 的定義是個空 function
.........................
你到底在寫什麼啊?
: 所以這裡我認為只是 overwriting
: 當然可能硬說 virtual member function 我想也沒有錯.
--
受不了