最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++超集C++/CLI模塊的基本用法

 更新時間:2022年07月04日 10:48:17   作者:天方  
這篇文章介紹了C++超集C++/CLI模塊的基本用法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

C#和C++是非常相似的兩種語言,然而我們卻常常將其用于兩種不同的地方,C#得益于其簡潔的語法和豐富的類庫,常用來構建業(yè)務系統(tǒng)。C++則具有底層API的訪問能力和拔尖的執(zhí)行效率,往往用于訪問底層模塊和構建有性能要求的算法。

這兩種場景看起來有較大的差異,大多數(shù)的時候可以各行其道。但還是有很多時候會出現(xiàn)融合的情況。當我們構建分布式系統(tǒng)的時候,由于RPC機制一般都是語言無關的,我們大可以將其各盡所長,按需劃分在最能發(fā)揮其長處的位置。然而,一旦我們需要構建融合兩者需求的集中式系統(tǒng)的時候,就會頭痛無比。

此時,我們可以使用C++/CLI搭建C++和.Net之間的橋梁,C++/CLI是一個比較有意思的兩棲模塊,它具有如下特點

  • 既可以訪問.Net類庫,也可以訪問C++原生類庫

  • 既可以被.Net程序引用,也可以被C++原生程序引用

使用C++/CLI,我們可以使用C++編寫算法,用C#編寫界面,也可以使用.Net Framework類庫增強C++程序功能,各取所長。

下面我們就以一個簡單的例子來演示一下它的用法:

Calculator.h:

#pragma?once

namespace?CppCliTest
{
    public?ref?class?Calculator
    {
        public:
        int?Add(int?a,?int?b);
    };
}

Calculator.cpp

#include?"stdafx.h"
#include?"Calculator.h"

namespace?CppCliTest
{
    int?Calculator::Add(int?a,?int?b)
    {
        return?a?+?b;
    }
}

main.cpp

#include?"stdafx.h"
#include?"Calculator.h"

using?namespace?System;
using?namespace?CppCliTest;

int?main(array<System::String?^> ^args)
{
    Calculator^ calculator =?gcnew?Calculator();
    int?result = calculator->Add(3, 2);

    Console::WriteLine(L"Result is {0}", result);
    return?0;
}

從這個例子中,我們可以簡單的管中窺豹的看看C++/CLI是在C++的基礎上擴充了一套語法,使其具有訪問.Net原始的功能,這里用到的有:

  • 使用ref class聲明CLI引用類型(C#中的class)

  • 使用^(例如如這里的String ^)來定義CLI引用類型

  • 使用gcnew創(chuàng)建CLI的引用類型

具體的功能我將在后面的文章中再做介紹,MSDN中也有文檔詳細的介紹了這些語法:https://msdn.microsoft.com/zh-cn/library/ms235289.aspx

雖然C++/CLI同時具有兩者的功能,但它使得本就比較復雜的C++語法變得更加復雜了(特別是初期的版本,非常復雜,現(xiàn)在已經(jīng)簡化了不少了),并且長期沒有得到VisualStudio這宇宙第一IDE的較好支持(在VS2010的時候還不支持智能提示),是無法與擁有大量語法糖的C#比開發(fā)效率的。加上大多數(shù)需求場景可以通過分布式系統(tǒng)解決,這些都導致了它一直沒有得到太多的關注。但是,微軟還是在積極的改進它的,加上C++11的支持,現(xiàn)在已經(jīng)比之前好用多了,如果用在合適的位置,是絕對能讓你的開發(fā)如魚得水的。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 探討++i與i++哪個效率更高

    探討++i與i++哪個效率更高

    i++總是要創(chuàng)建一個臨時對象,在退出函數(shù)時還要銷毀它,而且返回臨時對象的值時還會調(diào)用其拷貝構造函數(shù)
    2013-10-10
  • 基于C語言實現(xiàn)UDP服務器

    基于C語言實現(xiàn)UDP服務器

    這篇文章主要為大家詳細介紹了如何使用C語言編寫一個簡單的UDP服務器程序,以及如何接收和處理客戶端發(fā)送的數(shù)據(jù),有需要的小伙伴可以了解下
    2024-10-10
  • C++反轉字符串中單詞的字符順序的兩種方法

    C++反轉字符串中單詞的字符順序的兩種方法

    在處理字符串相關的問題時,反轉字符串中每個單詞的字符順序是一個常見的任務,同時要保證空格和單詞的初始順序不變,下面我們將詳細介紹兩種解決該問題的方法,包括其解題思路和具體實現(xiàn)細節(jié),需要的朋友可以參考下
    2025-03-03
  • C++ STL標準庫std::vector的使用詳解

    C++ STL標準庫std::vector的使用詳解

    vector 是表示可以改變大小的數(shù)組的序列容器,本文主要介紹了C++ STL標準庫std::vector的使用詳解,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++面試之你知道有哪些可執(zhí)行體嗎

    C++面試之你知道有哪些可執(zhí)行體嗎

    可執(zhí)行體其實也叫可調(diào)用對象,這也是面試常常會考到的問題,這篇文章就來和大家詳細講講C++中的可執(zhí)行體,感興趣的小伙伴可以了解一下
    2023-06-06
  • Qt實現(xiàn)自定義驗證碼輸入框控件的方法

    Qt實現(xiàn)自定義驗證碼輸入框控件的方法

    本文主要介紹了Qt實現(xiàn)自定義驗證碼輸入框控件的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • C++?Protobuf實現(xiàn)接口參數(shù)自動校驗詳解

    C++?Protobuf實現(xiàn)接口參數(shù)自動校驗詳解

    用C++做業(yè)務發(fā)開的同學是否還在不厭其煩的編寫大量if-else模塊來做接口參數(shù)校驗呢?今天,我們就模擬Java里面通過注解實現(xiàn)參數(shù)校驗的方式來針對C++?protobuf接口實現(xiàn)一個更加方便、快捷的參數(shù)校驗自動工具,希望對大家有所幫助
    2023-04-04
  • C語言單鏈表實現(xiàn)學生管理系統(tǒng)

    C語言單鏈表實現(xiàn)學生管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言單鏈表實現(xiàn)學生管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • C++之Boost::array用法簡介

    C++之Boost::array用法簡介

    這篇文章主要介紹了C++之Boost::array用法簡介,較為詳細的分析了Boost::array中的常見用法,并用實例的形式予以總結歸納,需要的朋友可以參考下
    2014-10-10
  • C語言繪制三角函數(shù)曲線

    C語言繪制三角函數(shù)曲線

    這篇文章主要為大家詳細介紹了C語言繪制三角函數(shù)曲線,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06

最新評論

阜新市| 阳高县| 蓬溪县| 新竹市| 茶陵县| 韶山市| 樟树市| 新丰县| 苏尼特右旗| 潞西市| 泽普县| 富平县| 龙井市| 微山县| 常山县| 观塘区| 余庆县| 湛江市| 普洱| 茶陵县| 柏乡县| 青河县| 宁夏| 屏南县| 屯留县| 海晏县| 无棣县| 黄骅市| 沙洋县| 海门市| 兴义市| 云南省| 新建县| 栾城县| 海口市| 股票| 苗栗市| 东乌珠穆沁旗| 瓦房店市| 闽侯县| 呼玛县|