C++/CLI 教程
《Visual C++/CLI 从入门到精通》 笔记
什么是C++/CLI
C++/CLI是C++和 .Net Framework 平台版本,它对标准C++进行了一些修改。标准C++允许的一些操作在C++/CLI中是不允许的(例如不能从多个基类继承),并进行了一些修改以支持.NET功能(例如接口和属性)以及兼容.Net运行时。
选择C++/CLI有两个重要理由。首先是互操作性,C++/CLI简化了将标准C++代码集成到.NET项目的步骤。其次是现在有了C++标准模板库(STL)的.NET版本,熟悉STL编码的人很容易迁移到.NET。
定义托管类
1 | ref class Animal |
ref关键字用于简化与 .NET Framework 组件的交互。在class关键字前添加ref,类就成了托管类。实例化对象时,会在“公共语言运行时”(CLR)堆上创建对象。对象的生存期由 .NET Framework 的垃圾回收器管理。
也可以定义非托管类,即不加ref关键字。
创建托管类对象
1 | Animal cat, dog; |
句柄
在C++/CLI中,是“运行时”帮你管理内存,C++/CLI没有了传统的“指针概念”。相反是用句柄来包含变量的地址。使用gcnew操作符动态创建对象。
定义一个指向Animal对象的句柄:
1 | Animal ^dog = gcnew Animal; |