VC++ ^和gcnew
2016-05-14 16:53
351 查看
VC++ ^和gcnew
在VS2010中可能是因为.net是对C++又进行了优化。有些代码不同了,现记录于此,防止以后忘掉了。StreamWriter^ sw = File::CreateText(path);
上面的^可能就是引用的意思,就是原来C++中的指针了。
sw->WriteLine( "Hello" );
其调用方式也是和指针的调用方法的方式是一样的。
Thread^ t = gcnew Thread(gcnew ThreadStart(writeStringThread::ThreadProc));
上面一句代码是VS 中创建线程的代码,看着就很蛋疼,不仅是^ 还有一个gcnew 从字面意思理解的话可能就是编译器自动对对象进行了管理,gc就是垃圾回收嘛。
我在晚上搜索了gcnew说:
C++/CLI中使用gcnew关键字表示在托管堆上分配内存,并且为了与以前的指针区分,用^来替换* ,就语义上来说他们的区别大致如下:
1. gcnew返回的是一个句柄(Handle),而new返回的是实际的内存地址.
2. gcnew创建的对象由虚拟机托管,而new创建的对象必须自己来管理和释放.
微软官方解释
gcnew creates an instance of a managed type (reference or value type) on the garbage collected heap. The result of the evaluation of a gcnew expression is a handle (^) to the type being created.
说gcnew 创建了一个实例在GC堆上,导致的结果就是一个句柄类型已经被创建。
好吧,微软的东西唯一的好处就是每个东西基本上都给了例子的。像VC++ 这种东西是尽量有多复杂就搞多复杂。
相关文章推荐
- c++中构造函数初始化的方法以及主要区别
- 使用jni实现在Java中调用C++的方法
- The Castle
- 关于C和c++中的文件结构
- c++ const_cast and reinterpret_cast
- 结合一道面试题 看c语言运算符的执行顺序
- 第7周 C语言程序设计(新2版) 练习2-3 字符串转换成等价整型值
- c语言编写猜数字游戏
- 2014第五届蓝桥杯C/C++程序设计本科B组决赛
- C++表达式new与delete知识详解
- C++ 使用const指针来传递对象
- VC++ MFC TRACE无法输出的问题解决
- 【C++】判断元素是否在vector中,对vector去重,两个vector求交集、并集
- 小记 c++11 知识点(shared_ptr)
- 第7周 C语言程序设计(新2版) 练习2-2 不用&&或||,写一个等价的for循环的程序
- 回调函数_注册
- C/C++中string与char *和 char []之间的转换
- c++_static_cast and dynamic_cast
- 第7周 C语言程序设计(新2版) 练习2-1 确定各种类型变量的取值范围
- C++使用指针来传递对象