class T2:public T1
{
public:
void print(void){cout<<"I am T2\n";}
};
void main(void)
{
T2 test;
test.set(10).print();
}
執行結果:
I am T1
為什麼呢?在Turbo C++3.0 則為 I am T2
而且繼承過後應該被改成 T2 &set(int b) 比較好吧!
不然如果一個類別有很多以本身為傳回值的函數,一旦被繼承還要一一寫類似
T2 &set(int b){T1::set(b);return *this;}不是很麻煩
是否有其他解決方法呢?
或者Borland C++ 有什麼選項可更改此情形???
--
[33m [1;5;36m╭╮╭╮ [33m
[1;5;36m║║║║ [0;32m Jason Tsay of C.H.W. Work Group
[1;5;36m║╰╯║ [0;33m E-Mail 831...@math.cycu.edu.tw
[1;5;36m║ [5;35mCYCU [36m║ [0;1;33mmath 菜頭到此一遊
[1;5;32m [42m██ [43m [1;5;33m██ [1;31m [41m██ [1;32m [42m██ [43m [1;33m██ [1;31m [41m██ [1;5;32m [42m██ [43m [1;5;33m██ [31m [41m██ [1;5;32m [42m██ [43m [1;5;33m██ [1;31m [41m██ [1;32m [42m██ [43m [1;33m██ [1;31m [41m██
[0;33m [44m
[m [1;37m※ 來源:‧中原方向站 sunss103.cc.cycu.edu.tw‧[FROM: h87.s171.ts.hin] [m
>#include<iostream.h>
>class T1
>{
>protected:
> int a;
>public:
> T1 &set(int b){a=b;return *this;}
> void print(void){cout<<"I am T1\n";}
>};
>
>class T2:public T1
>{
>public:
> void print(void){cout<<"I am T2\n";}
>};
>void main(void)
>{
>T2 test;
> test.set(10).print();
>}
>
>執行結果:
> I am T1
>
>為什麼呢?在Turbo C++3.0 則為 I am T2
>而且繼承過後應該被改成 T2 &set(int b) 比較好吧!
>不然如果一個類別有很多以本身為傳回值的函數,一旦被繼承還要一一寫類似
>T2 &set(int b){T1::set(b);return *this;}不是很麻煩
>
>是否有其他解決方法呢?
>或者Borland C++ 有什麼選項可更改此情形???
讓T1成為polymorphic
彰化的Kevin C