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