線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4014
推到 Plurk!
推到 Facebook!

struct裡使用函式

答題得分者是:暗黑破壞神
Smallcat7315
一般會員


發表:19
回覆:22
積分:7
註冊:2005-05-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-03-25 10:42:33 IP:122.124.xxx.xxx 訂閱
請問一下大家 在struct裡使用函式 有意義嗎?
可行嗎? 好像書上沒有看過有這樣用的? 跟class有何不同呢?
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-03-25 11:48:11 IP:220.131.xxx.xxx 訂閱
可以。
C 可不可以我不知道。不過 C 可以。
使用它跟 class 有什麼不同呀。
struct 中的 function 都是 public 的。
而 class 可以有其它的”等級”
這是它們的差別。
ldd
一般會員


發表:12
回覆:62
積分:19
註冊:2004-07-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-03-29 15:52:28 IP:61.30.xxx.xxx 訂閱
C++中的Class 與 Struct 的差別 
1.C 的Class 預設的存取為private 而 struct為 public<--書上只有寫這個~第二點是我認為的~如有錯誤還請高手指點!
2.struct 沒有繼承的機制

C的struct中不可以有 member function.
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-04-04 14:10:37 IP:220.134.xxx.xxx 訂閱
以前上 OOP 的課時,老師出過作業,要我們用 C 的 struct 去模擬 C++ 的一個 class
在 C 的 struct 中不能存 function 不過,可以存 function pointer。當時的作業就是這樣交差的

C 的 Class Instance 在記憶體中也是類似 struct 的放置方法,所以,有些人使用 pointer/offset 的方法,去叫用 private function。
------
http://www.ViewMove.com
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-04-04 22:42:24 IP:220.131.xxx.xxx 訂閱
其實,OO只是”強制”改善你的寫作習慣而已。
因為 C 裏面的 function 宣告有一個叫做 static 的修飾辭,它是用來說這個函數只在這個 .c 的檔案中有效。
這個就有 C 的私有函數的意思在了。
而以 C 看它編成 .asm 時的命名原則。其實。我們自己在寫 C 程式時,如果也在函數前冠上”夫姓”。(也就是這個 C 的檔名之類)
那也有 C 的效果。
只是要人去這麼做比較累。所以用一些語法來強制程式設計師遵守。
可是用 C 的 Class 時,會造成的是每個 function call 都會多一兩層的 call。(這個部份要去看ASM部份才會發現)
它的效率會比用C來得差一點。只是現在電腦都很快,就不介意那一兩層的 call 了。^^
===================引 用 文 章===================
以前上 OOP 的課時,老師出過作業,要我們用 C 的 struct 去模擬 C 的一個 class
在 C 的 struct 中不能存 function 不過,可以存 function pointer。當時的作業就是這樣交差的

C 的 Class Instance 在記憶體中也是類似 struct 的放置方法,所以,有些人使用 pointer/offset 的方法,去叫用 private function。
隆妹
一般會員


發表:6
回覆:12
積分:8
註冊:2003-10-02

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-04-30 02:51:21 IP:203.204.xxx.xxx 訂閱
C++ 的 struct 也有繼承機制並且支援 template
但是最大的差別還是再於第一點所述

===================引 用 ldd 文 章===================
C 中的Class 與 Struct 的差別?
1.C 的Class 預設的存取為private 而 struct為 public<--書上只有寫這個~第二點是我認為的~如有錯誤還請高手指點!
2.struct 沒有繼承的機制

C的struct中不可以有 member function.
ldd
一般會員


發表:12
回覆:62
積分:19
註冊:2004-07-06

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-05-08 13:53:37 IP:61.30.xxx.xxx 訂閱
真是汗顏~剛剛查了一下真的有繼承的機制~~看樣子書還是看的不夠多~
感謝隆妹的指正~ : )
===================引 用 隆妹 文 章===================
C 的 struct 也有繼承機制並且支援 template
但是最大的差別還是再於第一點所述

===================引 用 ldd 文 章===================
C 中的Class 與 Struct 的差別?
1.C 的Class 預設的存取為private 而 struct為 public<--書上只有寫這個~第二點是我認為的~如有錯誤還請高手指點!
2.struct 沒有繼承的機制

C的struct中不可以有 member function.
系統時間:2024-05-08 4:26:38
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!