C++ study note vol.1
開宗明義: 我跟 C++ 不熟
----
以前我看過一個問題: 是不是要先學 C, 再學C++
這個問題我沒辦法回答, 因為我已經寫 C寫了好多年啦 XD
隨著我寫的 code 逐漸增加, 慢慢的, 我也想多掌握一些其他技術
其中物件導向的技術, 確實是很多問題不錯的解
因此, 我又把 C++ Primer 打開來看
----
我以前覺得 C++很笨重
C++ 支援很多的語法, 很多 fancy的作法
但是書上沒有告訴你
1. C++ 一堆 fancy 的東西, 一些特別的語法, 是為了什麼而存在?
2. 為什麼要有這些東西, 要在那個場合, 要怎麼用才好?
3. 有printf(), 我非得用 cout 不可嗎 ?
市面上有一大堆 C/C++ 的書, 但是很少有書好好告訴你
What's pratical C++ ?
----
我再舉個例子
Operator overloading 是 C++ 支援的 fancy 功能之一
可以把 +, -, *, /, [], 等等語法重新定義
但是我非得要用 operator overloading?
我呼叫函數, 一樣能完成這個功能, 那我為什麼一定要這樣做 ?
現實的狀況是, 除非有必要
不然用 operator overloading, 通常只會降低程式的可讀性
所以這個東西... 似乎也沒有很必要去學...
----
再來, 是所有公司interview的 C++ 考試, 必考的 virtual function
大部分的書會告訴你, 這個語法是怎麼回事, 怎麼用
但是, 其實 virtual function, 也可以用 C 去模擬出來...
更不用說, 其實 C 也可以拿來寫物件導向的程式
不管 C++語法再怎麼神妙, 他最後都會變成 instructions
從組合語言的角度出發想問題, 才能看到事情的全貌
----
以前我看過一個問題: 是不是要先學 C, 再學C++
這個問題我沒辦法回答, 因為我已經寫 C寫了好多年啦 XD
隨著我寫的 code 逐漸增加, 慢慢的, 我也想多掌握一些其他技術
其中物件導向的技術, 確實是很多問題不錯的解
因此, 我又把 C++ Primer 打開來看
----
我以前覺得 C++很笨重
C++ 支援很多的語法, 很多 fancy的作法
但是書上沒有告訴你
1. C++ 一堆 fancy 的東西, 一些特別的語法, 是為了什麼而存在?
2. 為什麼要有這些東西, 要在那個場合, 要怎麼用才好?
3. 有printf(), 我非得用 cout 不可嗎 ?
市面上有一大堆 C/C++ 的書, 但是很少有書好好告訴你
What's pratical C++ ?
----
我再舉個例子
Operator overloading 是 C++ 支援的 fancy 功能之一
可以把 +, -, *, /, [], 等等語法重新定義
但是我非得要用 operator overloading?
我呼叫函數, 一樣能完成這個功能, 那我為什麼一定要這樣做 ?
現實的狀況是, 除非有必要
不然用 operator overloading, 通常只會降低程式的可讀性
所以這個東西... 似乎也沒有很必要去學...
----
再來, 是所有公司interview的 C++ 考試, 必考的 virtual function
大部分的書會告訴你, 這個語法是怎麼回事, 怎麼用
但是, 其實 virtual function, 也可以用 C 去模擬出來...
更不用說, 其實 C 也可以拿來寫物件導向的程式
不管 C++語法再怎麼神妙, 他最後都會變成 instructions
從組合語言的角度出發想問題, 才能看到事情的全貌
留言