一组编码规范,通过C#调用C++ 自动封装的C# SDK,会发现面向对象思想的重要性。
C++ SDK可以使用自动封装工具转换成C# SDK。但需要遵守如下规则:
1.如果需要对C#对象进行判断,则分如下三种情况(以BMPPen为例):
   判断C#对象本身是否相等
   bool isEqual=object.Equals(bp1,bp2);
 
   判断C#持有的C++对象的指针是否相等
   bool isEqual=(bp1.NativeObject==bp2.NativeObject);
 
   判断C#对象持有的C++对象的值是否相等
   bool isEqual=(bp1==bp2);
 
2.关于派生:C#可以派生于C++自动封装的C#类
             C#可以重写C++的虚方法
             允许C#增加非公有方法、非公有属性
             当C#增加公有方法、公有属性时,必须使用组合的方式
 
3.生命周期:谁申请,谁释放(C++自动封装的C# SDK对象需要调用此对象的Dispose())
4.智能指针:智能指针的生命周期与对象生命周期一样,智能指针对象只是一种特殊的对象,这个对象通过引用计数的方式来管理其聚合的另一个对象的内存。值得注意的是:智能指针对象被销毁时,只是将引用计数递减,并不一定会销毁聚合对象,只有引用计数等于0时,才会销毁聚合对象。C#调用智能指针对象后,一定要显式释放智能指针对象,否则智能指针对象的引用计数不会递减;而C++程序中,智能指针对象会即时释放。

C#下调用C++ SDK的编码常识的更多相关文章

  1. Unity3D调用第三方SDK(之一)从eclipse到Unity3D 友盟

    原地址:http://www.360doc.com/content/14/0120/14/11670799_346638215.shtml 篇展示在Unity3D中调用友盟SDK的实现方法. 首先附上 ...

  2. 解决Java调用Azure SDK证书错误javax.net.ssl.SSLHandshakeException

    Azure作为微软的公有云平台,提供了非常丰富的SDK和API让开发人员可以非常方便的调用的各项服务,目前除了自家的.NET, Java, Python, nodeJS, Ruby,PHP等语言都提供 ...

  3. 解决 Java 调用 Azure SDK 证书错误 javax.net.ssl.SSLHandshakeException

    Azure 作为微软的公有云平台,提供了非常丰富的 SDK 和 API 让开发人员可以非常方便的调用的各项服务,目前除了自家的 .NET.Java.Python. nodeJS.Ruby,PHP 等语 ...

  4. C#多线程环境下调用 HttpWebRequest 并发连接限制

    C#多线程环境下调用 HttpWebRequest 并发连接限制 .net 的 HttpWebRequest 或者 WebClient 在多线程情况下存在并发连接限制,这个限制在桌面操作系统如 win ...

  5. ubuntu16.04.1下的mysql修改默认编码

    在Ubuntu 下配置 Mysql 的字符编码.安装完 Mysql 后,系统默认的字符编码是 latin1 ,输入的是中文,可是输出却是一堆乱码.现在要做的就是把 Mysql的默认字符编码设置为支持中 ...

  6. asp.net下调用Matlab生成动态链接库

    对于这次论文项目,最后在写一篇关于工程的博客,那就是在asp.net下调用matlab生成的dll动态链接库.至今关于matlab,c/c++(opencv),c#(asp.net)我总共写了4篇配置 ...

  7. windows下调用外部exe程序 SHELLEXECUTEINFO

    本文主要介绍两种在windows下调用外部exe程序的方法: 1.使用SHELLEXECUTEINFO 和 ShellExecuteEx SHELLEXECUTEINFO 结构体的定义如下: type ...

  8. MFC下调用控制台和控制台下MFC库的支持

    1.MFC下调用控制台 在CWinApp的InitInstance中对话框的DoModal之前加入 AllocConsole(); // 开辟控制台 SetConsoleTitle(_T(" ...

  9. ubuntu下修改mysql默认字符编码出现的Job failed to start解决办法

    ubuntu下修改mysql默认字符编码出现的Job failed to start解决办法 前几天卸掉了用了好多年的Windows,安装了Ubuntu12.04,就开始各种搭环境.今天装好了MySQ ...

随机推荐

  1. Java实验三报告

    一.  实验内容 (一)敏捷开发与XP 摘要:一项实践在XP环境中成功使用的依据通过XP的法则呈现,包括:快速反馈.假设简单性.递增更改.提倡更改.优质工作.XP软件开发的基石是XP的活动,包括:编码 ...

  2. C++经典编程题#5:寻找下标

    总时间限制:  1000ms 内存限制:  65536kB 描述 已知一个整数数组x[],其中的元素彼此都不相同.找出给定的数组中是否有一个元素满足x[i]=i的关系,数组下标从0开始.     举例 ...

  3. 使用 Redis 实现分布式系统轻量级协调技术

    http://www.ibm.com/developerworks/cn/opensource/os-cn-redis-coordinate/index.html 在分布式系统中,各个进程(本文使用进 ...

  4. ie下的onscroll和onresize的优化

    ie下的scroll和resize的优化 1.onscroll function scrollEvent(){ //do something... console.log('do something. ...

  5. Java获取本地IP地址

    import java.net.InetAddress; import java.net.UnknownHostException; public class IpTest { public stat ...

  6. SqlServer基础:游标

    记录下今天用到的游标: DECLARE @TempID INTDECLARE @Number INTSET @Number=1DECLARE myCursor CURSOR FOR     SELEC ...

  7. gpt

    gpt 这里sdb是大于2T的那个VD,具体到您的机器,可以先在parted命令中先用list命令列出磁盘,然后用mklabel gpt来转换,具体如下: (parted) select /dev/s ...

  8. C# 值类型和引用类型及参数传递

    值类型和引用类型: C#数据类型分为两大类:值类型和引用类型. 值类型数据主要有:结构体struct,枚举体enum,布尔型bool,浮点型,整型. 引用类型数据主要有:数组,字符串,接口,委托,类. ...

  9. 使用Proj.Net创建空间参考

    在RGEOS项目中,投影变换是通过Proj.Net来实现的. 支持的投影主要包括AlbersProjection.TransverseMercator.Mercator.Krovak.Lambert ...

  10. navicat premium 导出表结构

    1.右键 点击public,然后选择 数据传输 2.选择数据库对象,目标选择文件,选择文件的路径,然后开始