Soft_Job 板


LINE

※ 引述《joeywayi (拉拉拉吃屎啦)》之銘言: : 如題 : 想請問各位攻城濕 : 因為我自己是學習c++入門的 : 覺得比起java友善很多 : 常常聽到說c++很難 : 這個是真的嗎? C跟C++是完全不同的語言(無誤 C++是個很大很大的坑(相比JAVA/.NET) C的聖經 The C Programming Language 很薄一本 看完也懂了八九成,寫純C你不用看太多書 C++公認的聖經 C++ Primer 厚厚一本 看完之後你更不懂了,寫C++書看不完 C跟C++最簡單的差異包含 1.記憶體管理 //這是C的寫法 int *ptr = malloc(sizeof(int)); //配置記憶體 free(ptr);//釋放記憶體 //這是C++的寫法 int *ptr = new int(100);//配置記憶體 delete a;//釋放記憶體 而C++的new 跟delete又會影響 建構式(constructor)跟解構式(destructor)的呼叫 在C/C++中記憶體管理,是很重要的事情,沒弄好就會造成記憶體被佔用 2. 物件導向(Object-oriented) 把所有方法、函式都模組化,並且有封裝、繼承、多型、抽象的概念(詳細自己研讀) 而舉例來說goto 是C中一個很強大的功能, 但到了C++反而建議不要用,因為會危害程式的可閱讀性 而你要在C中寫出類似OO的語法當然也是可以,但就很像閉門造車,自找麻煩 3. 樣板(Template) C++之所以強大的原因之一,自己研究 然後C/C++ 跟JAVA/.NET 相比 1. 記憶體管理 JAVA/.NET 少了delete 跟free這些要自己手動釋放記憶體的傢伙 取而代之的是Garbage Collection(俗稱GC), 讓底層自動幫你管理哪些資源不再被利用需要釋放 因為是系統底層管理的,所以你也不能知道到底釋放了沒 你頂多使用GC.Collect() //.net 去通知系統該釋放了,但系統到底釋放了沒 天知道 2. 泛型(template) 你沒看錯,跟C++的樣版名稱一樣,但偏偏兩者不完全相同 MSDN中簡單說明了這兩者不是一樣的東西,C#中的是閹割版(應該可以這樣說) https://msdn.microsoft.com/zh-tw/library/c6cyy67b.aspx 3. 指標(pointer, ptr) C就俱備的強大利器,把記憶體的利用又細分成實體跟門牌號碼(指標)的概念 先學JAVA/.Net的在回去看C/C++ 常常會看不懂 ptr到底在幹嘛 因為JAVA/.Net 已經簡化了ptr,在裡面可能會看到的指標大概就只剩this(物件本體) 以上是小弟工作寫了半年C++簡單的介紹.Net 跟C++的差異 如果是學習導向的,C++跟.Net都學不會吃虧 如果是工作導向的,就看你要走哪個領域 e.g 走前端html/javascript的話,你就不需要學C/C++了 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.240.59.148
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1461257524.A.154.html
1F:→ freeunixer: 是 Java/C# 只能 ref 不能 ptr ,就搞不懂 ptr 在幹啥. 04/22 01:10
2F:→ freeunixer: 學 Java/C# 的 ref 以為是 ptr,學過 C++ 才知道並不是 04/22 01:12
3F:推 loveflames: 其實C++用smart ptr比較好,還有C++也加入GC機制了 04/22 01:22
4F:推 doomleika: 沒有finally強迫要用RAII不然等著resource leak 04/22 01:38
5F:推 doomleika: 一堆undefined behavior出錯又不會告訴你有問題 04/22 01:40
6F:→ doomleika: Double delete把heap搞爛大概一個星期就沒了 04/22 01:41
7F:→ doomleika: 編譯器對標準不是100%實作有些功能看得到吃不到 04/22 01:42
8F:推 doomleika: 標準函式庫在應用面太弱變成要實務些東西又要看 04/22 01:45
9F:→ doomleika: 第三方lib,然後不同lib寫法有不一樣 04/22 01:45
10F:推 doomleika: 有一堆選擇,也不像一堆語言有規定一個寫法或conventio 04/22 01:47
11F:→ doomleika: 變成procedure/OO/generic全部都要會 04/22 01:48
12F:→ doomleika: 不能只會一種,不然沒辦法維護legacy code 04/22 01:49
13F:推 loveflames: C++同樣一件事可以用一堆語法來寫,還有多如牛毛的語 04/22 01:49
14F:→ loveflames: 法省略規定 04/22 01:49
15F:→ loveflames: 如果碰到metaprogramming就更可怕 04/22 01:50
16F:推 doomleika: 光是i18n預設的compiler搞不好還在用ascii 04/22 01:50
17F:→ doomleika: 那是要用w_char還是第三方lib的unicode字串?如果有 04/22 01:52
18F:→ doomleika: 兩個project要整合一個用w_char一個用wxWidget你要怎 04/22 01:53
19F:→ doomleika: 諸如此類的問題 04/22 01:53
20F:→ doomleika: 像java現在預設unicode,python有unicode字串或是三版 04/22 01:54
21F:→ doomleika: 直接預設幫你搞定 04/22 01:55
22F:推 doomleika: 很多別的語言預設應該弄好的問題到c++就是一堆毛 04/22 01:57
23F:推 micola: delete[] not delete 04/22 08:30
24F:推 Kalamu: 原PO的寫法用delete沒錯吧! 04/22 08:56
25F:推 Rougun: 大家覺得Rust怎麼樣呢 04/22 09:13
26F:→ brucetu: 我覺得this不是指標啊 04/22 09:26
27F:→ brucetu: 指標抓個CE找個單機遊戲玩玩就懂了 04/22 09:27
28F:→ brucetu: 也不是什麼門牌跟實體的概念.. 04/22 09:27
29F:→ brucetu: int*跟int都是占用4byte存著值 本質一樣 04/22 09:28
30F:→ atst2: 是實作的結果一樣,本質不同,不同硬體,系統對int的長度 04/22 09:47
31F:→ atst2: 可不同啊, 現在認為一樣是長久演變來的習慣 04/22 09:48
32F:→ brucetu: int長度也算在本質的範圍嗎.. 04/22 09:50
33F:→ brucetu: 真心推薦學習上看到很多*就暈的人 去玩一下CheatEngine 04/22 09:52
34F:→ brucetu: 找過一兩個偏移 就懂指標運做起來是什麼意思 幾層都一樣 04/22 09:52
35F:→ yr: int *ptr 然後 delete a ,編不過吧,然後陣列要 delete [] 04/22 10:37
36F:→ dreamnook: http://www.slideshare.net/olvemaudal/deep-c 04/22 10:40
37F:→ dreamnook: 以前我都覺得我只是穿著泳圈在水面上呼吸 04/22 10:40
38F:→ dreamnook: 看完這個後...證明我是對的XD 04/22 10:41
39F:→ dreamnook: 445頁 有空可以看看 可以了解為何c/c++很"深" 04/22 10:42
40F:推 elements: Rust 很好 04/22 11:16
41F:→ elements: 阿 值得學 04/22 11:16
※ 編輯: VVll (211.72.185.162), 04/22/2016 11:42:57
42F:→ ts04953635: this比較像是class吧,我覺得 04/22 12:47
43F:→ fjyang: 用C寫OO是閉門造車的話,Liunx是自找麻煩? 04/22 12:55
44F:→ bibo9901: linux kernel 沒有太多OO啊, 要看就看gtk+ 那就真的很醜 04/22 13:08
45F:推 femlro: 樓下c++之神 yoco 04/22 13:10
46F:推 iWRZ: Linux Kernel OO也還好吧....... 04/22 14:05
47F:推 sarafciel: 等記憶體位置可以取負值再來說int跟int*一樣吧XD 04/22 14:45
48F:推 wxywxywxy: C也可以寫出很棒的oo程式 但要花非常多的心力 04/22 15:40
49F:推 oread168: 幫請神 04/22 15:54
50F:→ x000032001: 負值只是一種表示法而已阿..電腦就只有01 哪來正負 04/22 17:46
51F:推 cobrasgo: 基本上C和C++是否能拿來類比就很有討論空間了 04/22 18:20
52F:推 zebraseven: 你 malloc 前是不是忘了 type casting 04/22 19:12
53F:→ brucetu: 同樣4byte你可以取成正值也可以取成負值啊…我的天R 反 04/22 21:50
54F:→ brucetu: 正難不難 看個人吧 04/22 21:50
55F:→ brucetu: 糾結在語言規範說很難 我只覺得那叫很雜 沒什麼令人看不 04/22 21:52
56F:→ brucetu: 懂的東西 就是多而已 包括那445頁的pdf也是 就是規則多 04/22 21:52
57F:→ brucetu: 很雜而已 要這樣比 那個語言沒有一堆自己的規則呢 04/22 21:52
58F:→ doomleika: 懂這些只覺得未來新人進來會很辛苦 04/22 22:01
59F:→ GoalBased: C# 語言規格 500頁 04/23 01:01
60F:推 iWRZ: Thinking in Java 整本厚度和重量可以拿來當殺人凶器 04/23 01:24
61F:推 kwpn: 3樓搞錯啦,是C++/CLI有加入GC機制,不是C++ 04/23 06:12
62F:→ remmurds: java目前還沒有真正的泛型 java的泛型比較像是語言特色 04/23 08:49
63F:→ remmurds: 所以在執行階段時會出現大量的type casting 因為在JVM那 04/23 08:50
64F:→ remmurds: 層通通都被當成object來存 04/23 08:50
65F:→ remmurds: .NET記取了java的缺點 在泛型的設計上跟java有很大的不 04/23 08:51
66F:→ remmurds: 同 執行階段沒有type casting的問題 04/23 08:51
67F:→ duckfly: JAVA泛型會這麼設計是為了相容之前沒泛型只用Object的寫 04/23 13:00
68F:→ duckfly: 法,有著歷史包袱沒法像C#可以砍掉重練 04/23 13:00
69F:推 loveflames: 回kwpn,minimal GC後來沒進入標準?我倒沒注意 04/23 13:47
70F:推 kuope: Thinking in Java這本書有兩種變成兇器的方式 04/23 16:07
71F:→ kuope: 一種是直接揮擊被害人的頭部 04/23 16:07
72F:→ kuope: 另一種是讓被害人整本嗑完 04/23 16:07
73F:→ kuope: 我不知道那一種比較慘… 04/23 16:07
74F:→ newstar2007: c++沒有原生的應用層library 造成後續很多程式整合上 04/25 01:42
75F:→ newstar2007: 極度的麻煩 光是搞字串這東西就花掉一半的開發時間了 04/25 01:43
76F:→ newstar2007: 如果再扯到微軟過去開發又捨棄的東西 根本災難 04/25 01:44







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Gossiping站內搜尋

TOP