ram是什么动物| 脖子上长扁平疣是什么原因| 定海神针什么意思| 紫癜挂什么科| 西红柿不能和什么一起吃| 诈骗是什么意思| 徘徊什么意思| 玫瑰花泡水喝有什么功效| 含金量什么意思| 情人和小三的区别是什么| 坐月子可以吃什么零食| 脊柱炎是什么症状| 老火汤是什么意思| 容易出汗是什么原因| 肾活检是什么意思| 丝瓜不能和什么食物一起吃| mac是什么牌子| 体癣用什么药| 高血压2级是什么意思| 核子是什么| 补丁是什么意思| 老年人出虚汗是什么原因引起的| 尿道炎吃什么药最好| 广西北海有什么好玩的地方| 肝在五行中属什么| 胃疼买什么药| 有什么中药可以壮阳| 镀金什么意思| 吃什么能提高血压| 皮蛋和什么不能一起吃| 幼小衔接都学什么知识| 爸爸的爸爸叫什么| 甘草有什么功效| 皮肤黄的人适合穿什么颜色的衣服| noah是什么牌子| 妈妈弟弟的儿子叫什么| 炖大骨头放什么调料| 嘴巴臭是什么原因| 爱豆什么意思| 头疼应该挂什么科| 什么是情趣| 最好的避孕方法是什么| 客之痣是什么意思| 心脏早搏是什么原因| 胃酸吃什么可以缓解| 口爆什么意思| 什么情况需要做胃镜| 梦见厕所是什么预兆| 怀孕白细胞高是什么原因| 孕妇白细胞高是什么原因| 疏通血管吃什么好| 梦见楼塌了是什么意思| 吃什么可以祛斑| 秘书是什么意思| 夏至是什么时候| mens是什么意思| ii是什么意思| 天麻与什么煲汤最好| 免疫五项能查出什么病| 喜用神什么意思| 烛光晚餐是什么意思| hazzys是什么牌子| 遇到黄鼠狼是什么征兆| dht是什么| 木节念什么| 振五行属什么| 二十年是什么婚| 头皮软绵绵的什么原因| 发改委是管什么的| 政委是干什么的| 胃酸烧心吃什么食物| 主人是什么意思| 2025年什么年| qn医学上是什么意思| 私生粉是什么意思| 总是睡不着觉是什么原因| 高铁上不能带什么| 崩盘是什么意思| 什么叫生酮| 露从今夜白下一句是什么| 右大腿上部疼痛是什么原因| 古代地龙是什么| 双肺纹理增多增粗是什么意思| 异麦芽酮糖醇是什么| 伊朗是什么教派| 黄河水为什么是黄的| 蛋白尿吃什么食物好| 粗茶淡饭下一句是什么| 林彪什么时候死的| slay是什么意思| 牙齿遇冷热都痛是什么原因| 泵头是什么| 麂皮是什么材质| 泰坦尼克号什么时候上映的| 什么是我的| 粉红是什么意思| 猫砂是什么| 1208是什么星座| 气血不足是什么症状| 血压低吃什么药见效快| 梦见杀鸡是什么预兆| 九牛一毛是什么生肖| 乳房疼挂什么科室| 地中海贫血是什么原因引起的| 疗养是什么意思| 什么情况下会缺钾| 654-2是什么药| 炸膛什么意思| 两面三刀是什么生肖| 一什么茶| 什么的田野| 家里为什么有蟑螂| 补气血喝什么口服液好| 为什么会流产| 三合局是什么意思| 阴道骚痒是什么原因| 肠胀气吃什么药| 梦见前男友死了是什么意思| venes保温杯是什么品牌| 舌头有问题看什么科| 1月1号什么星座| 兔死狗烹是什么生肖| 女人什么时候最想男人| pcp是什么意思| 龙和什么生肖相冲| 葛根粉有什么功效| 食指有痣代表什么意思| 马飞是什么药| 黄帝内经是什么时期的| 白细胞加号什么意思| 女人左眼跳是什么预兆| 痛风吃什么水果好| 为什么健身后体重反而重了| 瑞五行属什么| 神经病吃什么药效果好| 捡肥皂什么意思| cpr是什么| 州和洲有什么区别| 鸡子是什么东西| 切是什么偏旁| 飞机下降时耳朵疼是什么原因| 信天翁是什么鸟| 生肖鼠和什么生肖相冲| zorro是什么牌子的打火机| 冻梨是什么梨| 引火上身是什么意思| 后羿是一个什么样的人| 梦见钱是什么意思| beko是什么牌子| 肚子疼应该挂什么科| 轻度脂肪肝有什么症状| 月经什么颜色的血是正常的| 为什么一吃辣的就拉肚子| 苦口婆心是什么意思| 进贡是什么意思| 果子狸是什么动物| 梦见找鞋子是什么意思| 什么睡姿对髋关节好| shuuemura是什么牌子| 四方八面是什么生肖| 为什么经常刷牙还牙黄| 蚊子为什么会咬人| 指腹为婚是什么意思| 口干咽干是什么原因| 人设什么意思| 浅色是什么颜色| 双响炮是什么| 财神爷叫什么名字| 阴唇痒是什么原因| 开火车是什么意思| 小学生什么时候放暑假| 轻贱是什么意思| 亲夫是什么意思| 73年属什么| 甘油三酯高用什么药好| 自身免疫性胃炎是什么意思| 供给侧改革什么意思| 善根是什么意思| 空调送风模式有什么用| 下巴有痣代表什么| 疝气手术是什么| 什么叫流产| 感化是什么意思| bu什么颜色| 登革热是什么| 灰溜溜是什么意思| 什么树林| 孙悟空原名叫什么| 左束支传导阻滞是什么意思| 体癣用什么药| 弯的是什么意思| 肥达氏反应检查什么病| ctc什么意思| 血压低什么原因造成的| 甲状腺需要做什么检查| hcg稀释是什么意思| 11月4号是什么星座| 活死人是什么意思| 眼睛肿胀是什么原因| 花生吃多了有什么坏处| 奶粉可以做什么美食| 1995是什么年| 什么动物可以贴在墙上| 刺激性干咳是什么症状| 航五行属什么| 梦见自己怀孕是什么意思| 高回声是什么意思| 排斥一个人什么意思| 长鸡眼是什么原因| 完美收官什么意思| 火烈鸟为什么是红色的| 女人没经验开什么店好| 芒果跟什么不能一起吃| 主管药师是什么职称| 超敏c反应蛋白高说明什么| 下架是什么意思| 喝红糖水有什么好处和坏处| 龙虎山是什么地貌| 保胎吃什么食物好| 母字是什么结构| 小孩长得慢是什么原因| 什么人容易得帕金森| 2000年是什么生肖| 为什么清真不吃猪肉| plus是什么意思| 少字五行属什么| 常规血检能查出什么| 1310是什么意思| 嘴角长疱疹是什么原因| 6月初9是什么日子| 章鱼吃什么| 虎父无犬女是什么意思| 德高望重是什么生肖| 6月份有什么节假日| 气短挂什么科| 什么的眼睛| 腊八蒜为什么是绿色的| 什么是黄道吉日| 契爷是什么意思| 夜盲症吃什么| 数字1代表什么意思| 内裤发霉是什么原因| 感冒为什么会全身酸痛无力| 6月7日什么星座| 上面一个处下面一个日是什么字| 忖量是什么意思| 爱屋及乌是什么意思| 吃什么补肝养肝| 智齿拔了有什么影响| 盗墓笔记讲了什么| 铁蛋白是什么| 尿臭是什么原因男性| 沙漏是什么意思| 吃什么水果对嗓子好| 老鼠为什么会飞| 上海月薪三万什么水平| 手脚脱皮吃什么维生素| 扁桃体肿大吃什么药好| 巨婴是什么意思| 梅毒为什么会自愈| 桜什么意思| 为什么不能拜女娲娘娘| 灵魂伴侣是指什么意思| 7月4号是什么节日| 百度Vai al contenuto

诗曼芬--10年内衣运营,邀您开启财富之门!

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
louis是什么意思 阳虚吃什么中药调理 12月14日是什么星座 真知灼见什么意思 叕怎么读音是什么意思
美国人喜欢什么颜色 什么是前列腺钙化 眼圈黑是什么原因 为什么一到晚上就咳嗽 疱疹感染是什么病
豆蔻是什么 carnival手表什么牌子 什么牌的笔记本电脑好 政治庇护是什么意思 情人眼里出西施是什么意思
血常规检查挂什么科 孩子高低肩有什么好办法纠正 宋江是一个什么样的人 kkp什么意思 青红皂白的皂是什么颜色
拔了智齿需要注意什么xianpinbao.com 她将是你的新娘是什么歌520myf.com 阎王爷姓什么hlguo.com 五十年是什么婚hcv7jop6ns0r.cn 什么水果可以解酒hcv9jop2ns4r.cn
什么布料最好gysmod.com 慕斯蛋糕是什么意思hcv8jop1ns6r.cn 菁字五行属什么chuanglingweilai.com 气胸有什么症状1949doufunao.com 燥热是什么意思hcv8jop8ns9r.cn
精不液化是什么原因导致的hcv9jop6ns0r.cn 子宫肌瘤挂什么科室hcv9jop2ns0r.cn 一什么不什么的成语hcv8jop5ns3r.cn 蟑螂屎长什么样hcv7jop6ns3r.cn 激光脱毛有什么副作用hcv8jop2ns6r.cn
减肥吃什么玉米hcv8jop2ns8r.cn 夫妻肺片里面都有什么hcv8jop6ns0r.cn 甲状腺结节什么引起的hcv8jop7ns8r.cn 怀孕打黄体酮针有什么作用hebeidezhi.com 四大皆空是什么意思hcv9jop2ns5r.cn
百度