打压什么意思| 蛇床子是什么| swell是什么牌子| 砗磲是什么| 为什么新疆人长得像外国人| 走路脚心疼是什么原因| 孕妇吃什么好| 青津果的功效是什么| 相得益彰意思是什么| 银装素裹是什么意思| d二聚体偏高说明什么| 求购是什么意思| 解说是什么意思| 打火机里的液体是什么| o型血不能和什么血型的人生孩子| hpv检查什么| 螺蛳粉是什么做的| 贫血喝什么口服液| 你太low了是什么意思| 鱼香肉丝是什么菜系| 做爱什么姿势最舒服| 三色堇的花语是什么| 色令智昏是什么意思| 僵尸是什么意思| 上当是什么意思| 阴虱用什么药可以根除| 吃什么提高免疫力和增强体质| 最难写的字是什么| 奇花异草的异是什么意思| 为什么夏天越来越热| 鱼加思读什么| 琼瑶是什么意思| 减肥吃什么主食| 什么是活检| 胎儿脉络丛囊肿是什么原因引起的| 梦见赢钱了是什么预兆| 睡醒嘴苦是什么原因| 三点水加一个心读什么| 白细胞高是什么意思| 都市丽人什么意思| 蛇的眼睛是什么颜色| 止汗药什么最好| 肠道胀气是什么原因造成的| 什么水果含铁| 三五成群是什么意思| 提篮子是什么意思| 虎皮兰开花寓意什么| 乳糖不耐受是什么意思| 身怀六甲什么意思| 淋巴细胞浸润是什么意思| 孕期心情不好对胎儿有什么影响| jet是什么意思| 为什么很多人不去庐山| 空调输入功率是什么意思| 看肺应该挂什么科| 血常规检查什么项目| 暗是什么生肖| 为什么很困却睡不着| 南什么北什么| 冬的部首是什么| 耳麦是什么| 2月6号是什么星座| 仓鼠咬笼子是什么原因| 十二月四号是什么星座| 第一次见女方家长带什么礼物好| 矿油是什么| 骨裂是什么感觉| 毛囊炎是什么| 脂肪酶高是什么原因| 鬼迷日眼是什么意思| 陈皮的作用是什么| 梦见眼镜蛇是什么预兆| 疱疹是什么样子的| 甲减饮食需要注意什么| 三级医院什么意思| 奀是什么意思| 骨折吃什么钙片| 中尉是什么级别| 6月16号是什么星座| 乙肝病毒表面抗体弱阳性什么意思| 做梦梦见老婆出轨是什么意思| 4月9号是什么星座| 女人怀孕的最佳时间是什么时间| 背沟深代表什么| 檀木手串有什么好处| 乳腺病人吃什么好| 肛门长肉球是什么原因| 诺如病毒是什么症状| 武警和特警有什么区别| 1.20是什么星座| 什么人不适合喝骆驼奶| 吃什么好| 毫不逊色的意思是什么| 中二病是什么| 辣根是什么| 啤酒加鸡蛋有什么功效| 什么是电子烟| 花枝是什么食材| 灰绿色是什么颜色| 跖疣是什么| 中医减肥挂什么科| 腹直肌是什么| 定增是什么意思| 什么是证件照| 7月20号什么星座| 双肺纹理增重是什么意思| 海关锁是什么意思| 皮试阳性是什么意思| 梦见小孩子是什么意思| 胆囊炎能吃什么食物| 女性尿道感染吃什么药| 为什么会下冰雹| 肛周脓肿吃什么药| 消化不良吃什么食物好| nt值代表什么| 所向披靡是什么意思| 做梦梦到蟒蛇是什么征兆| 手脚肿胀是什么原因| 什么面条好吃| 胸口痛挂什么科| ep什么意思| 甲亢吃什么盐| 多肽是什么| 18度穿什么衣服合适| 貔貅什么人不能戴| 结婚前一天晚上的宴会叫什么| 90年出生属什么生肖| 安全起见是什么意思| 读书破万卷下一句是什么| 阑珊是什么意思| 塑料是什么材料| 什么症状吃藿香清胃胶囊| 8月3日是什么日子| 老放屁是什么病的征兆| 耳朵发炎吃什么消炎药| 鸡炖什么好吃| 为什么刚小便完又有尿意| 脚围指的是什么| 什么是外阴炎| npc是什么意思啊| 骆驼是什么牌子| 胆囊切除后可以吃什么水果| 脑动脉硬化是什么意思| 什么姿势最深| 肾炎的饮食应注意什么| 宿命是什么意思| 零申报是什么意思| 末那识是什么意思| 异性缘是什么意思| 道家思想的核心是什么| 生长纹是什么原因| 听字五行属什么| 甲硝唑的副作用是什么| 闲鱼卖出的东西钱什么时候到账| 造纸术是什么时候发明的| 1930年属什么| 查肝功能能查出什么病| 北京朝阳医院擅长什么| 成人发烧38度吃什么药| 什么避孕套好用| 见多识广是什么生肖| 眼轴是什么| 胃炎适合吃什么食物| 吃什么治肝病| 菊花是什么意思| 缺钾会出现什么症状| 嗔什么意思| 梦见打雷是什么意思| 秋天有什么花开| 吃东西想吐是什么原因| 盗墓笔记它到底是什么| 脚面疼是什么原因引起的| 网球肘是什么症状| 蜻蜓为什么要点水| 血糖高吃什么饭| 梦见打台球是什么意思| 女性感染hpv有什么症状| 血糖高吃什么食物| 维生素c阴性什么意思| 流口水吃什么药最好| 海笋是什么东西| 霸天虎和威震天是什么关系| 为什么体检前不能喝水| 灰配什么颜色好看| 痔疮痒痒的是什么原因| 游离甲状腺素是什么| 嘈杂纳减是什么意思| 五行代表什么意思| 拉脱水是什么症状| 五花八门什么意思| 馊主意是什么意思| 肚子为什么胀气| 振字五行属什么| 瓜蒌根为什么叫天花粉| 晕3d什么症状| 牛油果对身体有什么好处| 啰嗦是什么意思| 反射弧太长是什么意思| 筋膜提升术是什么| 转头头晕是什么原因| 脖子长痘痘是因为什么原因| 一个田一个比念什么| 大祭司是什么意思| 早早孕有什么征兆| 低钾是什么原因造成的| 低血压去药店买什么药| 犯月是什么意思| 家有蝙蝠是什么兆头| 中药什么时间喝效果最好| 甘露丸是什么| 不全纵隔子宫是什么意思| 微针是什么美容项目| 爱因斯坦是什么星座| 嗦是什么意思| 咖啡有什么作用| 流局是什么意思| 腰痛是什么原因引起的| 被老鼠咬了打什么疫苗| 杜字五行属什么| 白酒兑什么好喝| 戒指什么品牌好| 一路走好是什么意思| 海员是干什么的| 木丑念什么| 右侧卵巢内囊性回声是什么意思| 手指月牙代表什么意思| 反复发烧是什么原因引起的| 什么水果好吃| 查血清能查出什么病| 老年人吃什么水果好| 站久了腰疼是什么原因| 女字五行属什么| 黄芪泡水喝有什么作用| 1984年是什么命| 皮肤上出现小红点是什么原因| 栀子花什么时候修剪| 吃什么消炎| 云彩像什么| 伪军是什么意思| 尿酸高要注意什么饮食| 什么是七杀命格| 梨形心见于什么病| 玉字五行属什么| gop是什么| 蒙奇奇是什么动物| 什么是阴历| 什么是钾肥| 黄痰吃什么药最好| 鸡和什么相冲| 微量泵是干什么用的| 双币信用卡是什么意思| 看病人送什么花| 2017年是属什么年| 宝宝支气管炎吃什么药| 什么是商| 短裤搭配什么鞋子| 副主任医师是什么级别| 李自成为什么会失败| 纸醉金迷下一句是什么| 6.19是什么日子| 干咳嗽喉咙痒是什么原因| 久站腰疼是什么原因| 山药什么季节成熟| 酸西地那非片是什么药| 百度Vai al contenuto

点赞南海雄鹰!军网报道我6架飞豹和外军舰载

Da Wikipedia, l'enciclopedia libera.
百度 张新波说:“这种全新的电池设计思路,极大地拓展了锂空气电池的实际应用领域,可以吸引更多科研人员投入其中,大力推动锂空气电池的应用进程。

C++/CLI (C++ modificato per la Common Language Infrastructure) è un linguaggio di programmazione specifico creato da Microsoft e destinato a sostituire le Managed extensions per C++. Si tratta di una revisione completa che mira a semplificare la vecchia sintassi del Managed C++, ora deprecato.[1] C++/CLI è stato standardizzato da ECMA come ECMA-372. è disponibile in Visual Studio 2005, 2008, 2010, 2012, 2013, 2015 e 2017, incluse le versioni Express.

Cambiamenti sintattici

[modifica | modifica wikitesto]

C++/CLI è concepito come un linguaggio a sé stante, (ad esempio con un nuovo insieme di parole chiave), a differenza del Managed C++ (MC++), che è piuttosto un superset del C++ in cui le parole chiave non standard erano identificate con __gc o __value. Di conseguenza, introduce alcune importanti modifiche sintattiche, legate principalmente all'eliminazione di identificatori ambigui e all'aggiunta di funzionalità specifiche NET.

Molte sintassi in conflitto, come le versioni multiple dell'operatore new() in MC++, sono state separate: nel C++/CLI e in. NET i tipi di riferimento vengono creati con la nuova parola chiave gcnew (che sta per garbage collected new ()). Inoltre, C++/CLI ha introdotto il concetto dei generici da. NET (simile, per gli scopi più comuni, ai template standard C++, ma molto diversi nella loro implementazione).

In MC++, vi erano due diversi tipi di puntatori: i puntatori __nogc, essenzialmente ordinari puntatori C++, e i puntatori __gc, usati per i tipi di riferimento. NET. Nel C++/CLI, invece, l'unico tipo di puntatore è il normale puntatore C++, mentre i tipi di riferimento. NET sono accessibili attraverso un handle usando la nuova sintassi ClassName^ invece di ClassName*. Questo nuovo costrutto è particolarmente utile quando il codice contiene insieme codice C++ standard e codice gestito; consente di rendere chiaro quali sono gli oggetti gestiti dal garbage collection automatico di. NET e quali sono invece gli oggetti che il programmatore deve distruggere in modo esplicito.

Rintracciamento di riferimenti

[modifica | modifica wikitesto]

Un rintracciamento di riferimenti (anche detto tracking references) in C++/CLI è un handle di una variabile passata per riferimento. Come concetto è simile all'utilizzo di *& (riferimento a un puntatore) nel C++ classico, e (nella dichiarazione di funzioni) corrisponde alla parola chiave ref applicata a tipi in C#, o ByRef in. NET. Per indicare un rintracciamento di riferimento il C++/CLI utilizza come sintassi ^%.

Un esempio sull'utilizzo del rintracciamento di riferimenti viene mostrato nel codice che segue. Rimpiazzare il rintracciamento di riferimenti con un handle regolare lascerebbe l'array di stringhe risultante con 10 stringhe handles non inizializzate, in quanto sarebbero impostate solamente le stringhe handle nell'array, dato che vengono passate per valore e non per riferimento.

int main()
{
    array<String^> ^arr = gcnew array<String^>(10);
    int i = 0;

    for each(String^% s in arr) {
        s = i++.ToString();
    }

    return 0;
}

Si noti che in C# tale costrutto non sarebbe permesso, dato che non permette il passaggio di valori per riferimento mediante cicli foreach. Pertanto occorrerebbe una soluzione secondaria o temporanea.

Finalizzatori e variabili automatiche

[modifica | modifica wikitesto]

Un'ulteriore differenza con C++/CLI è l'introduzione sintattica di finalizzatori !ClassName, un tipo speciale di distruttore non deterministico eseguito come parte della garbage collection routine. La sintassi dei distruttori classica del C++, quale ~ClassName(), esiste anche per oggetti gestiti, e riflette meglio la semantica "tradizionale" del C++ di una distruzione deterministica (di fatto i distruttori possono essere invocati a livello di codice mediante delete.

Nel paradigma .NET naturale, il modello di distruzione non deterministico annulla il metodo protetto Finalize della classe root Object; mentre il modello deterministico è implementato attraverso il metodo Dispose dell'interfaccia IDisposable (che il compilatore C++/CLI trasforma in un distruttore). Oggetti provenienti da C# o VB.NET, che annullano il metodo Dipose, possono essere posti manualmente in C++/CLI mediante delete, esattamente come le classi. NET in C++/CLI.

// C++/CLI
ref class MiaClasse{
public:
    MiaClasse();  // costruttore
    ~MiaClasse(); // distruttore (deterministico) (implementato come IDisposable.Dispose())
protected:
    !MiaClasse(); // finalizzatore (distruttore non-deterministico) (implemented as Finalize())

public:
    static void Test(){
        MiaClasse automatic; // Non un handle, e non inizializzato: il compilatore invoca qui il costruttore

        MiaClasse ^user = gcnew MiaClasse();
        delete user;

        // Il compilatore invoca il distruttore automatico quando l'automatico esce dalla visibilità (scope)
    }
};

Operatore di overloading

[modifica | modifica wikitesto]

Un operatore di overloading (o di sovraccarico) funziona esattamente come nel C++ classico. Ogni * diventa un ^, ogni & diventa un %, con il resto della sintassi completamente invariato, con un'eccezione: per le classi. NET, l'operatore di overloading è instanziabile e invocabile non solo per le classi stesse, ma anche per i riferimenti alle classi. Tale peculiarità è necessaria per dare a ref class la semantica per l'operatore di overloading che le ref classes .NET si aspettano (Al contrario, questo significa anche che le ref classes presenti nel framework. NET fanno riferimento operatori di overloading, spesso implicitamente implementati in C++/CLI.

Per esempio, facendo un paragone tra due Stringhe di riferimento (String^) mediante l'operatore == restituirà "true" (vero) a prescindere. Essendo l'operatore di overloading statico, effettuare un cast a Object^ rimuove la semantica di overloading.

//effetti sulla referenza dell'operatore di overloading
String ^s1 = "abc";
String ^s2 = "ab" + "c";
Object ^o1 = s1;
Object ^o2 = s2;
s1 == s2; // true, perché riferiscono allo stesso oggetto
o1 == o2; // false, perché non sono lo stesso oggetto

Il nuovo C++/CX con l'obiettivo di WinRT, sebbene produca interamente codice "unmanaged", prende in prestito il concetto di ref e la sintassi ^ per la referenza sul conteggio delle componenti di WinRT, che sono simili agli oggetti COM.[2]

Collegamenti esterni

[modifica | modifica wikitesto]
Controllo di autoritàLCCN (ENsh2006008767 · J9U (ENHE987007542477905171
鱿鱼是什么动物 血糖低是什么原因引起的 智商140是什么水平 喝什么酒对身体好 开水烫伤用什么药膏好得快
别名是什么意思 过江龙是什么意思 不眠夜是什么意思 水军什么意思 坐围是什么
什么是转氨酶 中药为什么要热着喝 有什么症状是肯定没怀孕 孕妇牙痛有什么办法 奥美拉唑什么时候吃最好
什么样的红点是艾滋病 吃叶酸有什么副作用 三朵玫瑰花代表什么意思 448是什么意思 尿结石吃什么药
肠胃炎可以喝什么饮料shenchushe.com 备注是什么意思hcv8jop0ns5r.cn 八字是指什么hcv9jop6ns5r.cn 什么头什么气hcv9jop8ns1r.cn 梅核气是什么病hcv7jop6ns6r.cn
为什么喜欢秋天hcv8jop1ns2r.cn 血压高是什么原因liaochangning.com 出气不顺畅是什么原因hcv9jop6ns5r.cn 痛风挂号什么科hcv8jop5ns6r.cn 勾心斗角是什么意思hcv8jop4ns8r.cn
雌激素低吃什么药onlinewuye.com 便潜血阳性什么意思hcv8jop6ns7r.cn 什么叫中位数bfb118.com 热射病是什么hcv7jop9ns0r.cn 男性什么适合长期泡水喝hcv9jop8ns3r.cn
领导谈话自己该说什么hcv8jop8ns8r.cn 高什么远瞩hcv7jop9ns2r.cn 地龙是什么东西shenchushe.com 什么牌奶粉好hcv8jop8ns8r.cn 福泽深厚什么意思hcv9jop2ns7r.cn
百度