<b>实例解析C++/CLI之开卷有益</b>[VC/C++编程]
本文“<b>实例解析C++/CLI之开卷有益</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
C++/CLI可以说是尺度C++语言一种新的"方言",它是Microsoft为充分操纵CLI(Common Language Infrastructure)平台而开辟出来的.那么,它在语言方面有何新颖独到之处呢,下面,就让我们一同开始奥妙的C++/CLI语言之旅(文中全部示例代码,均以Visual Studio.NET 2005 Professional编译通过,全部的讲授内容,也均以Visual Studio.NET 2005环境为底子).
程序集与元数据
传统的C++编译情势包含把单独的源文件编译为目标文件(obj),再把目标文件与库函数链接在一同,以生成可执路程序.而CLI情势却大不相同,它触及到程序集的成立与利用.
简单来说,在不计输入源文件数目的底子上,程序集即为单次编译的输出.假如输出带有一个进入点函数(比方main函数),它即为一个.exe文件;假如没有,它则为一个.dll文件.任何引用外部程序集而生成的编译,必必要拜候所依靠的程序集,此时也没有近似传统链接时用到的头文件机制,而是通过编译器在所依靠的程序集内部查找,来拜候所需的外部信息.
程序集包含了元数据,其描写了包含在那边的范例与函数,还有CIL(Common Intermediate Language)指令--Microsoft称其为"MSIL".元数据与指令能通过独立的VES(Virtual Execution System)来履行.
CLI范例
例1是一个模拟二维点的类.此处不得不提到命名空间,全部的CLI尺度库范例都属于System命名空间,或嵌套在其内部的某个命名空间之下,比方System::Object和System::String,还有System::IO、 System::Text、System::Runtime::CompilerOptions等等.标志1可避免在程序中一向利用namespace限定词.
例1:
/*1*/
using namespace System;
/*2*/
public ref class Point
{
int x;
int y;
public:
//定义用于读写X与Y实例属性
/*3a*/ property int X
{
/*3b*/ int get() { return x; }
/*3c*/ void set(int val) { x = val; }
}
/*4a*/ property int Y
{
/*4b*/ int get() { return y; }
/*4c*/ void set(int val) { y = val; }
}
//定义实例构造函数
/*5a*/ Point()
{
/*5b*/ X = 0;
/*5c*/ Y = 0;
}
/*6a*/ Point(int xor, int yor)
{
/*6b*/ X = xor;
/*6c*/ Y = yor;
}
//定义实例办法
/*7a*/ void Move(int xor, int yor)
{
/*7b*/ X = xor;
/*7c*/ Y = yor;
}
/*8a*/ virtual bool Equals(Object^ obj) override
{
/*8b*/ if (obj == nullptr)
{
return false;
}
/*8c*/ if (this == obj) //我们在测试自己吗?
{
return true;
}
/*8d*/ if (GetType() == obj->GetType())
{
/*8e*/ Point^ p = static_cast<Point^>(obj);
/*8f*/ return (X == p->X) && (Y == p->Y);
}
return false;
}
/*9*/ virtual int GetHashCode() override
{
return X ^ (Y << 1);
}
/*10a*/ virtual String^ ToString() override
{
/*10b*/ return String::Concat("(", X, ",", Y, ")");
}
};
在标志2中,我们定义了一个称为Point的引用类(ref class),一个引用类是一个CLI引用范例,当二者一同利用时,ref与class(中间有空格)表示了一个新的关键词.
以上是“<b>实例解析C++/CLI之开卷有益</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |