为你解疑C++ CLR和ISO C++原理区别

开发 后端
文章主要讲解一下C++ CLR和ISO C++的区别,从中让你收获到什么叫“引用类型”和“数值类型",还为你推荐比较好的两本书和一个视频推荐给大家。

C++ CLR也很长时间了,终于让我明白了ISO C++与C++ CLR的区别,下面就让我简述一下我学习中痛苦和收获吧。
通过学习WinForm编程,严格的说我并不是WinForm编程,因为我的原来的程序里有着大量的ISO C++,完全用C++ CLI来编程我可承受不起,同时由于是自学,几乎用了很长时间我才明白ISO C++与C++ CLR的区别,同时由于国内翻译过来的书太慢了,我看到的C++CLR都是VS2003的老语法,而网上下载的微软的视频却是VS2005,很多语法规则都变得面目全非,终于在网上找了一本VS2005 的中文电子书,我才明白这两者的区别,vs2003怪异的__gc,以及在2005里面我觉得很酷,但是不能不说更怪异得^(追踪句柄),传说中的tracking handle,可以说真是痛苦。

更痛苦的是C++ CLR怪异的语法不说,最糟糕的是我要用到我以前的类,同时又要用到winform的界面,还有.net类库中的FileStream流以及MemoryStream,和ADO.net,这里面涉及到在非托管的类里面声明托管的对象,于是更怪异的语法gcroot<>就出来了,以及各种怪异得错误就出来了,几乎我每写5行程序,编译的时候就会报错,那个心情可真是一个沧桑。可以说当时我认为在微软部门里最笨的就是编写C++.net编译器,这群人,怎么编写一个这么麻烦东西,在非托管的代码和托管的代码中,经常会出现这样那样怪异的错误,还有在*,^,以及普通值变量中,这转型的过程还真是异常的痛苦。

收获

虽然转型过程是痛苦得,但是现在回首看一看还是值得的,毕竟.net平台是以后未来的主流,同时由于WinForm下写的,所以我学习了它的事件消息响应机制,“委托”,这个以前在软工课本上才能见到的概念我终于有了深刻的理解。

***个收获就是我终于明白了什么叫“引用类型”和“数值类型”,以前一直不明白java到底比C++好在哪里,这次在众多“值类型”以及“引用类型”就是value和ref中在转换和来回引用,终于明白了到底怎么回事,看来C#和Java成为主流,也不是“浪的虚名呀”。

收获二:通过这次痛苦转型,感觉自己还是幸运的,虽然机缘巧合,终于知道了C++ CLR的存在,终于知道怎么操纵强大的.net类库,想来对以后的找工作应该会有好处吧

收获三:在这么费劲的学习C++ CLR的过程中,这次我这小小程序员体会了什么叫”学习“,什么叫艰辛,以前我觉得考研难考,可是才发现其实"研究"才是真的辛苦呢,毕竟考研只要按照方向来就可以了,可以说不用脑子只要努力就可以了,但研究的时候就不一样了,当你多方思考,才发现解决的问题如此简单,如此的让你哭笑不得,寻找的过程却是颇费周折呀。

这里我留下我认为比较好的两本书和一个视频推荐给和我一样需要转型的程序员。
1:《mfc应用程序在.net框架下的扩展》这本书讲的是怎么在mfc下应用.net类库,这本书我觉得很好,把.net类库的几个特点全部突出了,不过唯一不足的是它的语法仍然是vs2003的,看的时候要注意。
2 :visual C++ 2005入门经典,这本书是在网上一个高手推荐给我得,我都没有买到,只有电子版得,但是这本书把vs2005中C++
CLR的语法讲得很透彻,同时对比了ISO C++的语法,是一本在原理上很好的书.
3:visual c++.net这本书也很好,winform编程介绍的很多,尤其是我从中学到了很多GDI+的知识,呵呵,不过可惜它的语法我自己借的这个版本的也是vs2003语法,需要注意。
4:***一个是网上得微软的视频,就是李建忠讲的vs2005这个可以更好的把握vs2005 C++ CLR.

以上就是我的一点学习经验,希望大家看到的能少做弯路,同时也希望和我一样处于转型的程序员大家能多交流,这样就能更好的进步呵呵。

***想说的是虽然连我自己都觉得C++ CLR很“鸡肋”,但还是想说tracking handle这名字我很喜欢真的很“cool”,就为这,我也要好好学习,就像war3中的orc那样,曾经那么的受压迫,连一代兽王Grubby亦很无奈,但是既然选择了一个种族,就要坚持下去,就像现在的orc一样,总有我们强大的那天。哈哈,我翘首以盼。

【编辑推荐】

  1. 深入了解.NET编译器中CLR加载过程
  2. 详解CLR中Jit编译发生的过程
  3. 分析CLR Via的方法参数相关
  4. 浅析CLR类库调用方法
  5. 分析与对比CLR Via C#静态构造函数的性能
责任编辑:田树 来源: Cworld的专栏
相关推荐

2009-09-17 18:40:12

CLR是什么

2011-04-11 09:43:25

C++C

2010-02-05 16:07:52

C++多态覆盖

2022-07-01 11:56:54

C语言C++编程语言

2010-01-28 15:22:12

C++嵌套类

2011-06-21 15:00:07

JAVAC++

2011-04-06 08:57:07

C++java多态

2020-06-17 12:22:44

C覆盖重载

2010-02-02 13:20:33

C++对象传递

2018-05-15 11:14:07

面试官C++编程

2011-05-18 18:05:47

C#C++

2011-05-18 17:56:38

C#C++

2021-02-26 10:41:59

C++程序员代码

2011-07-13 18:00:51

CC++VC

2010-01-28 14:38:36

C++和C#、Java

2010-02-06 14:40:50

C++初始化和赋值

2024-02-26 12:13:32

C++开发编程

2009-08-19 10:09:21

C#和C++

2011-07-14 17:45:06

CC++

2011-08-04 13:38:01

Objective-C C++
点赞
收藏

51CTO技术栈公众号