Re: [討論] c++真的很難嗎?
※ 引述《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://www.ptt.cc/bbs/Soft_Job/M.1461257524.A.154.html
→
04/22 01:10, , 1F
04/22 01:10, 1F
→
04/22 01:12, , 2F
04/22 01:12, 2F
推
04/22 01:22, , 3F
04/22 01:22, 3F
推
04/22 01:38, , 4F
04/22 01:38, 4F
推
04/22 01:40, , 5F
04/22 01:40, 5F
→
04/22 01:41, , 6F
04/22 01:41, 6F
→
04/22 01:42, , 7F
04/22 01:42, 7F
推
04/22 01:45, , 8F
04/22 01:45, 8F
→
04/22 01:45, , 9F
04/22 01:45, 9F
推
04/22 01:47, , 10F
04/22 01:47, 10F
→
04/22 01:48, , 11F
04/22 01:48, 11F
→
04/22 01:49, , 12F
04/22 01:49, 12F
推
04/22 01:49, , 13F
04/22 01:49, 13F
→
04/22 01:49, , 14F
04/22 01:49, 14F
→
04/22 01:50, , 15F
04/22 01:50, 15F
推
04/22 01:50, , 16F
04/22 01:50, 16F
→
04/22 01:52, , 17F
04/22 01:52, 17F
→
04/22 01:53, , 18F
04/22 01:53, 18F
→
04/22 01:53, , 19F
04/22 01:53, 19F
→
04/22 01:54, , 20F
04/22 01:54, 20F
→
04/22 01:55, , 21F
04/22 01:55, 21F
推
04/22 01:57, , 22F
04/22 01:57, 22F
推
04/22 08:30, , 23F
04/22 08:30, 23F
推
04/22 08:56, , 24F
04/22 08:56, 24F
推
04/22 09:13, , 25F
04/22 09:13, 25F
→
04/22 09:26, , 26F
04/22 09:26, 26F
→
04/22 09:27, , 27F
04/22 09:27, 27F
→
04/22 09:27, , 28F
04/22 09:27, 28F
→
04/22 09:28, , 29F
04/22 09:28, 29F
→
04/22 09:47, , 30F
04/22 09:47, 30F
→
04/22 09:48, , 31F
04/22 09:48, 31F
→
04/22 09:50, , 32F
04/22 09:50, 32F
→
04/22 09:52, , 33F
04/22 09:52, 33F
→
04/22 09:52, , 34F
04/22 09:52, 34F
→
04/22 10:37, , 35F
04/22 10:37, 35F
→
04/22 10:40, , 36F
04/22 10:40, 36F
→
04/22 10:40, , 37F
04/22 10:40, 37F
→
04/22 10:41, , 38F
04/22 10:41, 38F
→
04/22 10:42, , 39F
04/22 10:42, 39F
推
04/22 11:16, , 40F
04/22 11:16, 40F
→
04/22 11:16, , 41F
04/22 11:16, 41F
※ 編輯: VVll (211.72.185.162), 04/22/2016 11:42:57
→
04/22 12:47, , 42F
04/22 12:47, 42F
→
04/22 12:55, , 43F
04/22 12:55, 43F
→
04/22 13:08, , 44F
04/22 13:08, 44F
推
04/22 13:10, , 45F
04/22 13:10, 45F
推
04/22 14:05, , 46F
04/22 14:05, 46F
推
04/22 14:45, , 47F
04/22 14:45, 47F
推
04/22 15:40, , 48F
04/22 15:40, 48F
推
04/22 15:54, , 49F
04/22 15:54, 49F
→
04/22 17:46, , 50F
04/22 17:46, 50F
推
04/22 18:20, , 51F
04/22 18:20, 51F
推
04/22 19:12, , 52F
04/22 19:12, 52F
→
04/22 21:50, , 53F
04/22 21:50, 53F
→
04/22 21:50, , 54F
04/22 21:50, 54F
→
04/22 21:52, , 55F
04/22 21:52, 55F
→
04/22 21:52, , 56F
04/22 21:52, 56F
→
04/22 21:52, , 57F
04/22 21:52, 57F
→
04/22 22:01, , 58F
04/22 22:01, 58F
→
04/23 01:01, , 59F
04/23 01:01, 59F
推
04/23 01:24, , 60F
04/23 01:24, 60F
推
04/23 06:12, , 61F
04/23 06:12, 61F
→
04/23 08:49, , 62F
04/23 08:49, 62F
→
04/23 08:50, , 63F
04/23 08:50, 63F
→
04/23 08:50, , 64F
04/23 08:50, 64F
→
04/23 08:51, , 65F
04/23 08:51, 65F
→
04/23 08:51, , 66F
04/23 08:51, 66F
→
04/23 13:00, , 67F
04/23 13:00, 67F
→
04/23 13:00, , 68F
04/23 13:00, 68F
推
04/23 13:47, , 69F
04/23 13:47, 69F
推
04/23 16:07, , 70F
04/23 16:07, 70F
→
04/23 16:07, , 71F
04/23 16:07, 71F
→
04/23 16:07, , 72F
04/23 16:07, 72F
→
04/23 16:07, , 73F
04/23 16:07, 73F
→
04/25 01:42, , 74F
04/25 01:42, 74F
→
04/25 01:43, , 75F
04/25 01:43, 75F
→
04/25 01:44, , 76F
04/25 01:44, 76F
討論串 (同標題文章)