c++/cli中见过这个符号:^
c++中我们用*
来表示一个指针,在c++/cli中,我们用符号^
来表示句柄。
现在*
用来指定crt heap上的原生指针,而句柄是安全指针
,它位于托管堆上。
你可以把句柄当成引用
来考虑,和原生指针不同的是,他们不会引起内存泄漏
,即便没有对它们进行适当的删除,因为gc会处理这些问题,并且他们没有一个固定的内存地址,所以在执行的时候它们会被移来移去。
%
对于^
就相当于&
对于*
1
2
3
4
5
6
7
|
n* pn = new n; //分配在原生heap上 n& rn = *pn; //绑定一个普通引用到原生对象 r^ hr = gcnew r; //分配在cli heap上 r% rr = *hr; //绑定跟踪的引用到gc-lvalue |
一 在vs2017/2019 安装 c++/cli的模块支持
二 新建c++/cli项目
三 添加源文件
1
2
|
string^ filename = "textfile.txt" ; streamwriter^ sw = gcnew streamwriter(filename); |
if you use the sample program, notice thatyou use the
gcnew
keyword instead ofnew
when creating a.net object
,and thatgcnew returns
a handle( ^ )
rather than a pointer( * )
:
1
2
3
4
5
6
7
8
9
10
11
12
|
using namespace system ; using namespace system ::io; int main() { string^ filename = "textfile.txt" ; streamwriter^ sw = gcnew streamwriter(filename); sw->writeline( "hi major" ); sw->close(); console::writeline( "a new file ('{0}') has been written" , filename); return 0; } |
到此这篇关于c++/cli在vs上的安装和初步使用的文章就介绍到这了,更多相关c++ cli安装使用内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/qq_41375318/article/details/118387439