欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++超集C++/CLI模塊的基本語(yǔ)法

 更新時(shí)間:2022年07月04日 11:07:02   作者:天方  
這篇文章介紹了C++超集C++/CLI模塊的基本語(yǔ)法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

托管對(duì)象的創(chuàng)建和引用

前文中我們已經(jīng)演示過(guò)創(chuàng)建一個(gè)托管對(duì)象,對(duì)于如下C#代碼:

System.Object?x =?new?System.Object();

其在C++/CLI中的等價(jià)代碼如下:

System::Object^ x =?gcnew?System::Object();

和傳統(tǒng)的C++創(chuàng)建的語(yǔ)法比較下,

P* x =?new?P();

我們不難發(fā)現(xiàn),對(duì)于托管對(duì)象,主要引入了如下兩個(gè)語(yǔ)法:

  • 用gcnew代替new實(shí)現(xiàn)托管對(duì)象的創(chuàng)建

  • 用^代替*實(shí)現(xiàn)托管對(duì)象的指針

這種方式創(chuàng)建的對(duì)象是可以直接被CLR支持的,可以在C#中使用。托管對(duì)象指針使用的方式和傳統(tǒng)的對(duì)象指針還是比較類(lèi)似的,直接使用->即可:

System::Object^ x = gcnew System::Object();
auto str = x->ToString();

另外,C++/CLI也有一種類(lèi)似于C++的對(duì)托管對(duì)象的引用的語(yǔ)法:

System::Object^ x = gcnew System::Object();
System::Object% y = *x;
auto str = y.ToString();

由于這種方式在C#里沒(méi)有對(duì)應(yīng)的語(yǔ)法,用起來(lái)感覺(jué)怪怪的,也不方便于其它.net語(yǔ)言集成。

托管類(lèi)型的定義

我們也可以自定義托管類(lèi)型,在CLR中,托管類(lèi)型是分為引用類(lèi)型(class)和值類(lèi)型(struct)的,在C++/CLI中的分別定義方式如下:

引用類(lèi)型:

public ref class MyClass
{
};

值類(lèi)型:

public value class MyClass
{
};

在ISO C++中類(lèi)定義中加上了ref或value標(biāo)記為托管類(lèi)型,還算比較容易使用。

枚舉

枚舉的定義和C++11的enum class一樣,它像數(shù)字那樣可以同時(shí)應(yīng)用于托管類(lèi)型和非托管類(lèi)型。

public?enum?class?SomeColors?{?Red,?Yellow,?Blue?};

或者更精確的表示:

public enum class SomeColors : char { Red, Yellow, Blue };

數(shù)組

C++/CLI中新增了array<T> ^的方式定義數(shù)組。

array<int> ^a =?gcnew?array<int>(100) { 1, 2, 3 };

或者使用它的完整版:

cli::array<int> ^a =?gcnew?cli::array<int> {1, 2, 3};

不定參數(shù)

對(duì)于C#中的不定參數(shù)的語(yǔ)法:

void?foo(params?string[] args)

在C++/CLI中對(duì)應(yīng)的版本為:

void?foo(...?array<String^>^?args)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論