iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++超集C++/CLI模块的基本用法
  • 595
分享到

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

2024-04-02 19:04:59 595人浏览 泡泡鱼
摘要

C#和c++是非常相似的两种语言,然而我们却常常将其用于两种不同的地方,C#得益于其简洁的语法和丰富的类库,常用来构建业务系统。C++则具有底层api的访问能力和拔尖的执行效率,往往

C#c++是非常相似的两种语言,然而我们却常常将其用于两种不同的地方,C#得益于其简洁的语法和丰富的类库,常用来构建业务系统。C++则具有底层api的访问能力和拔尖的执行效率,往往用于访问底层模块和构建有性能要求的算法

这两种场景看起来有较大的差异,大多数的时候可以各行其道。但还是有很多时候会出现融合的情况。当我们构建分布式系统的时候,由于rpc机制一般都是语言无关的,我们大可以将其各尽所长,按需划分在最能发挥其长处的位置。然而,一旦我们需要构建融合两者需求的集中式系统的时候,就会头痛无比。

此时,我们可以使用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创建CLI的引用类型

具体的功能我将在后面的文章中再做介绍,MSDN中也有文档详细的介绍了这些语法:https://msdn.microsoft.com/zh-cn/library/ms235289.aspx

虽然C++/CLI同时具有两者的功能,但它使得本就比较复杂的C++语法变得更加复杂了(特别是初期的版本,非常复杂,现在已经简化了不少了),并且长期没有得到VisualStudio这宇宙第一IDE的较好支持(在VS2010的时候还不支持智能提示),是无法与拥有大量语法糖的C#比开发效率的。加上大多数需求场景可以通过分布式系统解决,这些都导致了它一直没有得到太多的关注。但是,微软还是在积极的改进它的,加上C++11的支持,现在已经比之前好用多了,如果用在合适的位置,是绝对能让你的开发如鱼得水的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C++超集C++/CLI模块的基本用法

本文链接: https://www.lsjlt.com/news/153358.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++超集C++/CLI模块的基本用法
    C#和C++是非常相似的两种语言,然而我们却常常将其用于两种不同的地方,C#得益于其简洁的语法和丰富的类库,常用来构建业务系统。C++则具有底层API的访问能力和拔尖的执行效率,往往...
    99+
    2024-04-02
  • C++超集C++/CLI模块的基本语法
    托管对象的创建和引用 在前文中我们已经演示过创建一个托管对象,对于如下C#代码: System.Object x = new System.Object(); 其在C++/CLI中的...
    99+
    2024-04-02
  • C++超集C++/CLI模块的基本类型
    数值类型 对于基本的数值类型,在C++/CLI中是可以直接映射为托管类型的数值的,可以同时应用于托管类型和非托管类型,编译器会将其自动转换。 基本类型System命名空间中对应的类注...
    99+
    2024-04-02
  • C++中CLI模块的基本语法是什么
    本文小编为大家详细介绍“C++中CLI模块的基本语法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++中CLI模块的基本语法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。托管对象的创建和引用在前文...
    99+
    2023-07-02
  • C++中CLI模块的基本类型有哪些
    本文小编为大家详细介绍“C++中CLI模块的基本类型有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++中CLI模块的基本类型有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。数值类型对于基本的数值类型...
    99+
    2023-07-02
  • python + jira模块基本用法
    安装jira easy_install jira 导入jira from jira import JIRA 和jira服务器建立连接 jira = JIRA('http://localhost/jira/',basic_auth=...
    99+
    2023-01-31
    模块 python jira
  • c#中LINQ的基本用法(三)
    一.并行LINQ System.Linq名称空间中包含的类ParallelEnumerable可以分解查询的工作,使其分布在多个线程上。尽管Enumerable类给IEnumerab...
    99+
    2024-04-02
  • c#中LINQ的基本用法(一)
    LINQ(Language Integrated Query,语言集成查询),在C#语言中集成了查询语法,可以用相同的语法访问不同的数据源。LINQ提供了不同数据源的抽象层,所以可以...
    99+
    2024-04-02
  • c#中LINQ的基本用法(二)
    目录1.筛选2.用索引筛选3.类型筛选4.复合的from子句5.排序6.分组7.对嵌套的对象分组8.内连接9.左连接10.组连接11.集合操作12.合并13.分区14.聚合操作符15...
    99+
    2024-04-02
  • Python中re模块基本用法解析
    基于Python的正则表达式, 使用re模块: 1. match()方法, 从字符串头部开始匹配 import re content = 'The 123456 is my one phone number.' print(le...
    99+
    2023-01-31
    模块 Python
  • C++中replace() 函数的基本用法
    目录replace算法:用法一:用str替换指定字符串从起始位置pos开始长度为len的字符用法二: 用str替换 迭代器起始位置 和 结束位置 的字符用法三: 用substr的指定...
    99+
    2024-04-02
  • Node http模块学习:聊聊基本用法
    本篇文章给大家了解一下Node.js http模块,介绍一下createServer和listen方法,希望对大家有所帮助!http 模块使用 Node.js 中创建 Web 服务,主要依赖内置的 http 模块。经典的 express.j...
    99+
    2023-05-14
    node HTTP模块
  • 【Python_Matplotlib学习笔记(一)】pyplot模块的基本用法
    pyplot模块的基本用法 前言正文1、导入pyplot模块2、plt.plot()方法绘制图像3、plt.plot()方法添加描述信息4、plt.lim()方法设置坐标轴取值范围5、plt....
    99+
    2023-09-18
    matplotlib python
  • C++中引用处理的基本方法
    目录1.引用的基本用法1.1 引用的实质1.2 引用的用法2.函数中的引用3.引用的本质4.指针的引用5.常量引用补充:引用和指针的区别(重要)总结1.引用的基本用法 引用是C++对...
    99+
    2022-12-21
    c++ 引用 c++引用调用 c++引用用法
  • Node http模块基本使用方法是什么
    这篇文章主要介绍了Node http模块基本使用方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Node http模块基本使用方法是什么文章都会有所收获,下面我们一起来看看吧。http 模块使用 Nod...
    99+
    2023-07-05
  • C#集合之集(set)的用法
    包含不重复元素的集合称为“集(set)”。.NET Framework包含两个集HashSet<T>和SortedSet<T>,它们都...
    99+
    2024-04-02
  • C/C++Qt基本文件读写的基本使用(2种实现)
    目录QT基本文件读写QTextStream 实现流读写文件的读写是很多应用程序具有的功能,甚至某些应用程序就是围绕着某一种格式文件的处 理而开发的,所以文件读写是应用程序开发的一个基...
    99+
    2024-04-02
  • C#位运算符的基本用法介绍
    位运算符包括:| 按位或 OR,& 按位与 AND,^ 按位异或 XOR,~ 取反 NOT,<< 左移 Left Shift,>> 右移 Right ...
    99+
    2024-04-02
  • 浅谈C++ 设计模式的基本原则
    先上银行类案例代码如下: #include<iostream> using namespace std; class BankWorker { public...
    99+
    2024-04-02
  • C++ vector的基本使用方法是什么
    这篇文章主要介绍“C++ vector的基本使用方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++ vector的基本使用方法是什么”文章能帮助大家解决问题。一、ve...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作