Re: [問題] 想問關於Borland C++跟一般C++的差別?
※ 引述《mick99988 (高雄人)》之銘言:
: 各位大家好
: 最近因為主管希望我學C++(Borland C++)
: 但我所認知道的C++在大學時期好像沒有像是C#可以拉物件來寫
: 我所記得的是要用什麼Cin阿 Cout之類的語法的阿,然後執行後就是一個
: 命令提示字元的黑窗,而非能說有按鈕讓我們按 有txtBox能輸入...
: 所以這兩個是不是本質上有不太相同?
: 因為在以前想到能拉物件來寫程式腦袋自動聯想到C#或是Ladview
: 有無Borland C++6 初學者向的書籍呢?
: 小弟只接觸過C語言跟Keil C
剛好你講的這些除Labview我都碰過,真應該請我去上班才對XD
真要從頭講起,得先談MFC,但是太可怕了不要詳談。
所謂能拉的這些GUI元件,本質就是windows API,就是windows提供的一些C++物件,
MFC只用了最少的包裝,幾乎直接操作,所以很恐怖。
Borland C++
就是把windows API包成比較簡單可愛的VCL,所以GUI拉起來和C#很像,
而且還不需要.net framework。
最早我用VB6寫視窗軟體,但是為了OO、為了快、而且不要依賴.Net,
Borland C++是除MFC之外唯一選擇,這選擇大概只持續了兩三年。
後來.net越來越強大,在win8中都已經是預設的環境了,
加上VS太好用、C#在MSDN的支援夠強大資源夠多,只好屈服,
目前C#/winForm/WPF 是我主要的是視窗軟體開發工具。
以上我說的這些GUI工具,包含我不會用的Labview,
在底層其實都呼叫windows API,因為最後寫入VRAM都要走這關,差別在包裝不同。
MFC只包薄薄一層所以很難用,
Borland C++用VCL,包簡單很多,但是目前資源越來越少,
.net系列的全都是都透過.net framework去包WinAPI;
不過WPF好像有比較特別,是把GUI當作多媒體用DirectX顯示??
Borland C++ 和 你大學學的那種C++ 本質上是相同的,Borland C++只是多很多class,
這些class最常用到和GUI有關的,還有一些就是socket等等之類的。
所謂"拉"GUI這個動作,其實就是物件的 new + member variable 設定,
只不過個這個物件看得到,
button的位置、大小、顏色、文字都是某個button object的member variable。
也可以用單純的C++呼叫這些WinAPI,這樣你就是GUI自幹王,不必依賴上面這些工具了
我上次就這樣和com port通訊,結果很不方便。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.167.213.18
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1455119994.A.3B5.html
※ 編輯: deo2000 (42.79.149.59), 02/11/2016 00:32:13
→
02/11 01:12, , 1F
02/11 01:12, 1F
推
02/11 01:51, , 2F
02/11 01:51, 2F
→
02/11 01:52, , 3F
02/11 01:52, 3F
→
02/11 01:59, , 4F
02/11 01:59, 4F
→
02/11 02:01, , 5F
02/11 02:01, 5F
推
02/11 03:05, , 6F
02/11 03:05, 6F
→
02/11 05:19, , 7F
02/11 05:19, 7F
→
02/11 05:19, , 8F
02/11 05:19, 8F
→
02/11 07:51, , 9F
02/11 07:51, 9F
推
02/11 12:45, , 10F
02/11 12:45, 10F
推
02/11 13:44, , 11F
02/11 13:44, 11F
→
02/11 14:12, , 12F
02/11 14:12, 12F
→
02/11 16:01, , 13F
02/11 16:01, 13F
→
02/11 19:52, , 14F
02/11 19:52, 14F
→
02/11 20:42, , 15F
02/11 20:42, 15F
因為C++\CLI其實就是C++.net,但是.net原則上不使用pointer,以reference為主。
可是.net reference是會透過.net virtual machine重新映射到實體記憶體位址,
和C++原生reference差異太大,所以用一個有點噁心的^來區隔兩者。
我也曾經認為C++\CLI好棒棒,可以同時運用C++和C#,
不過比較冷門、資源比較少,兩者之間轉換麻煩不少,撐了一陣子。
壓垮我的最後一根稻草是multi-thread programming。
C++\CLI之下的multi-thread必須要用.net class,C++的不能用,
但是C++\CLI卻只能用不完整的.net multi-thread class,
造成thread synchronized和IPC可能要透過global或是根本找不到方法,
最後只好棄用C++\CLI,把半年來寫好的東西全改成C#\WPF。
※ 編輯: deo2000 (106.1.209.143), 02/12/2016 12:05:26
推
02/19 13:35, , 16F
02/19 13:35, 16F
→
02/19 13:36, , 17F
02/19 13:36, 17F
→
02/19 13:37, , 18F
02/19 13:37, 18F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):