Re: [問題] 關於物件導向的三個特色

看板C_and_CPP作者 (上大學好忙喔)時間14年前 (2010/01/19 05:16), 編輯推噓3(300)
留言3則, 3人參與, 最新討論串3/4 (看更多)
※ 引述《flydragon198 (阿凡達要看3D的)》之銘言: : 而多型,也是為了方便,例如你寫了一個把數值丟進去就可以相乘的函式 : 而乘法,可能有兩個數相乘,或三個數相乘,或四個數相乘 : 或者浮點數乘整數,整數乘整數,浮點數乘浮點數 : 你可以寫 : 乘法1(int , float) : 乘法2(float,float,int) : .......寫一堆 : 然後在main裡面又用一堆判斷式來判斷要呼叫哪個 乘法X() : 或者利用多型,雖然還是要寫一堆 乘法() : 但是在main裡面,會自動幫你依據函式簽名而決定呼叫哪一個乘法() : 例如 : 乘法(int , float) : 乘法(float,float,int) : 你在main裡面寫乘法(a,b,c) : 他自動會幫你呼叫乘法(float,float,int),因為引數有三個 : 你不用寫程式去判斷要呼叫乘法1()還是乘法2() : 寫乘法(d,e) : 他會自動幫你呼叫乘法(int , float),因為引數兩個 : 當然如果你要寫程式自己判斷呼叫哪個乘法X,那也沒有錯 小的不常來 只是路過XD 借用這個例子野人獻曝一下.. 像這個例子可能有人會說那不就要寫一大堆乘法function 但是這就是C++ template (我承認我不知道java或是其他語言的這類東西怎麼寫) 所可以提供的好處 舉例(語法搞不好有錯XD) template <class T1, class T2, class T3> T3 乘法(T1 a, T2 b){ return a*b; } 這樣寫出來的function 可以讓你不管用什麼型態去呼叫都可以正常作乘法 甚至可以透過typeid偵測不同的型態在其中的某小部份作不同處理 我覺得物件導向的優點在於可以很有彈性 然後把很多苦工讓程式來做 我念資工系的 很多人都說寫程式就是copy and paste 但是極致的物件導向應該是期望做到不要有任何重複的程式碼 而是大量增加程式碼重用(被呼叫)的程度 這點在程序導向的設計其實也有(模組化) 但是物件導向更加強這點罷了 ↑ 話雖如此 還是許多人連簡單的模組化都不肯 硬要複製貼上= = -- 以上是個人看法 我不是物件導向專家什麼的 不過滿有興趣的就是了XDDD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.165.96.185

01/19 08:16, , 1F
所以用得較好的是會用內定類別,繼承之後再稍微改寫一點點...
01/19 08:16, 1F

01/20 04:09, , 2F
物件導向與模板其實是兩個領域的東西……呵呵
01/20 04:09, 2F

01/21 20:57, , 3F
我很少用Template@@
01/21 20:57, 3F
文章代碼(AID): #1BLC-Ha- (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1BLC-Ha- (C_and_CPP)