為你解疑C++ CLR和ISO C++原理區(qū)別
用C++ CLR也很長時(shí)間了,終于讓我明白了ISO C++與C++ CLR的區(qū)別,下面就讓我簡(jiǎn)述一下我學(xué)習(xí)中痛苦和收獲吧。
通過學(xué)習(xí)WinForm編程,嚴(yán)格的說我并不是WinForm編程,因?yàn)槲业脑瓉淼某绦蚶镉兄罅康腎SO C++,完全用C++ CLI來編程我可承受不起,同時(shí)由于是自學(xué),幾乎用了很長時(shí)間我才明白ISO C++與C++ CLR的區(qū)別,同時(shí)由于國內(nèi)翻譯過來的書太慢了,我看到的C++CLR都是VS2003的老語法,而網(wǎng)上下載的微軟的視頻卻是VS2005,很多語法規(guī)則都變得面目全非,終于在網(wǎng)上找了一本VS2005 的中文電子書,我才明白這兩者的區(qū)別,vs2003怪異的__gc,以及在2005里面我覺得很酷,但是不能不說更怪異得^(追蹤句柄),傳說中的tracking handle,可以說真是痛苦。
更痛苦的是C++ CLR怪異的語法不說,最糟糕的是我要用到我以前的類,同時(shí)又要用到winform的界面,還有.net類庫中的FileStream流以及MemoryStream,和ADO.net,這里面涉及到在非托管的類里面聲明托管的對(duì)象,于是更怪異的語法gcroot<>就出來了,以及各種怪異得錯(cuò)誤就出來了,幾乎我每寫5行程序,編譯的時(shí)候就會(huì)報(bào)錯(cuò),那個(gè)心情可真是一個(gè)滄桑??梢哉f當(dāng)時(shí)我認(rèn)為在微軟部門里最笨的就是編寫C++.net編譯器,這群人,怎么編寫一個(gè)這么麻煩東西,在非托管的代碼和托管的代碼中,經(jīng)常會(huì)出現(xiàn)這樣那樣怪異的錯(cuò)誤,還有在*,^,以及普通值變量中,這轉(zhuǎn)型的過程還真是異常的痛苦。
收獲:
雖然轉(zhuǎn)型過程是痛苦得,但是現(xiàn)在回首看一看還是值得的,畢竟.net平臺(tái)是以后未來的主流,同時(shí)由于WinForm下寫的,所以我學(xué)習(xí)了它的事件消息響應(yīng)機(jī)制,“委托”,這個(gè)以前在軟工課本上才能見到的概念我終于有了深刻的理解。
***個(gè)收獲就是我終于明白了什么叫“引用類型”和“數(shù)值類型”,以前一直不明白java到底比C++好在哪里,這次在眾多“值類型”以及“引用類型”就是value和ref中在轉(zhuǎn)換和來回引用,終于明白了到底怎么回事,看來C#和Java成為主流,也不是“浪的虛名呀”。
收獲二:通過這次痛苦轉(zhuǎn)型,感覺自己還是幸運(yùn)的,雖然機(jī)緣巧合,終于知道了C++ CLR的存在,終于知道怎么操縱強(qiáng)大的.net類庫,想來對(duì)以后的找工作應(yīng)該會(huì)有好處吧
收獲三:在這么費(fèi)勁的學(xué)習(xí)C++ CLR的過程中,這次我這小小程序員體會(huì)了什么叫”學(xué)習(xí)“,什么叫艱辛,以前我覺得考研難考,可是才發(fā)現(xiàn)其實(shí)"研究"才是真的辛苦呢,畢竟考研只要按照方向來就可以了,可以說不用腦子只要努力就可以了,但研究的時(shí)候就不一樣了,當(dāng)你多方思考,才發(fā)現(xiàn)解決的問題如此簡(jiǎn)單,如此的讓你哭笑不得,尋找的過程卻是頗費(fèi)周折呀。
這里我留下我認(rèn)為比較好的兩本書和一個(gè)視頻推薦給和我一樣需要轉(zhuǎn)型的程序員。
1:《mfc應(yīng)用程序在.net框架下的擴(kuò)展》這本書講的是怎么在mfc下應(yīng)用.net類庫,這本書我覺得很好,把.net類庫的幾個(gè)特點(diǎn)全部突出了,不過唯一不足的是它的語法仍然是vs2003的,看的時(shí)候要注意。
2 :visual C++ 2005入門經(jīng)典,這本書是在網(wǎng)上一個(gè)高手推薦給我得,我都沒有買到,只有電子版得,但是這本書把vs2005中C++
CLR的語法講得很透徹,同時(shí)對(duì)比了ISO C++的語法,是一本在原理上很好的書.
3:visual c++.net這本書也很好,winform編程介紹的很多,尤其是我從中學(xué)到了很多GDI+的知識(shí),呵呵,不過可惜它的語法我自己借的這個(gè)版本的也是vs2003語法,需要注意。
4:***一個(gè)是網(wǎng)上得微軟的視頻,就是李建忠講的vs2005這個(gè)可以更好的把握vs2005 C++ CLR.
以上就是我的一點(diǎn)學(xué)習(xí)經(jīng)驗(yàn),希望大家看到的能少做彎路,同時(shí)也希望和我一樣處于轉(zhuǎn)型的程序員大家能多交流,這樣就能更好的進(jìn)步呵呵。
***想說的是雖然連我自己都覺得C++ CLR很“雞肋”,但還是想說tracking handle這名字我很喜歡真的很“cool”,就為這,我也要好好學(xué)習(xí),就像war3中的orc那樣,曾經(jīng)那么的受壓迫,連一代獸王Grubby亦很無奈,但是既然選擇了一個(gè)種族,就要堅(jiān)持下去,就像現(xiàn)在的orc一樣,總有我們強(qiáng)大的那天。哈哈,我翹首以盼。
【編輯推薦】