实例解析C++/CLI中的担当与列举[VC/C++编程]
本文“实例解析C++/CLI中的担当与列举[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
本文中,将要介绍与担当相关的C++/CLI主题,并以实际生活中银行交易的三种情势:存款、取款、转账,来阐明类的担当体系,且以一种新的列举情势来实现.
列举器
请看例1中声明的范例,它存在于其自身的源文件中,并编译为一个只包含此范例的程序集:
例1:
public enum class TransactionType :
unsigned char {Deposit, Withdrawal, Transfer};
与想像的一样,列举器中的Deposit、Withdrawal、Transfer辨别代表0、1、2的常量值,但有三个方面却让这个enum范例与尺度C++的enum范例(也就是"本地enum")大不相同.
·enum类只用于代替enum.这使TransactionType成为了一个CLI enum.(也答应enum构造,其与enum类等价.)
·此范例的可拜候性为public,以使其可从父类程序集外可见.(在C++/CLI中,一个本地enum范例也能有一个拜候限定符.)
·enum类有一个显式的基本范例限定符:在本例中为unsigned char.(在C++/CLI中,一个本地enum也能有一个基本范例.)默许情形下,基本范例为int.基本范例也能为bool或除wchar_t之外的肆意整形.(假如指定bool为基本范例,列举器必须显式地举行初始化,因为没有默许的初始值.)
支持这个新语法的缘由是CLI enum顺从CLS尺度,而本地enum却不顺从.
CLI enum与本地enum间最大的辨别在于构成方法上,列举名的作用范围由它的父类enum范例来限定.别的,尺度C++中定义的整数晋升,并不实用于CLI enum.
与本地enum近似,一个CLI enum也能被定义在一个类中,在这种情形下,就不答应利用拜候限定符了,因为嵌套范例的可见性,已被其嵌入到的范例可见性所代替.
交易的抽象基类
交易范例的担当体系在基类Transaction中,默许从System::Object担当,见例2:
例2:
using namespace System;
using namespace System::Threading;
/*1*/
public ref class Transaction abstract
{
TransactionType typeOfTransaction;
/*2*/ DateTime dateTimeOfTransaction;
public:
/*3a*/ property TransactionType TypeOfTransaction
{
TransactionType get() { return typeOfTransaction; }
private:
void set(TransactionType value) { typeOfTransaction = value; }
}
/*3b*/ property DateTime DateTimeOfTransaction
{
DateTime get() { return dateTimeOfTransaction; }
private:
void set(DateTime value) { dateTimeOfTransaction = value; }
}
/*4*/ virtual void PostTransaction() abstract;
protected:
/*5*/ Transaction(TransactionType transType)
{
/*6*/ Thread::Sleep((gcnew Random)->Next(1000,2001));
/*7*/ TypeOfTransaction = transType;
/*8*/ DateTimeOfTransaction = DateTime::Now;
}
};
在标号1中,这个类被标为abstract(抽象类),这意味着它不能被直接实例化.(抽象不是一个关键字,仅仅在此上下文中作了保存.)这个abstract修饰词可用于定义一个抽象类,而无须显式地声明一个或多个成员函数为纯虚范例.
在类的私有数据成员部份,一个Transaction包含了一个交易范例及一个时间日期戳,二者都由定义在标号3a及3b中的属性来拜候.在标号2中利用的CLI库值范例System::DateTime答应用一个当即变量显示出当天的日期与时间.请注意,两个属性是怎样拥有公有get办法与私有set办法的.(这是基于新的CLI尺度,并且目前已与CLS兼容了.)
以上是“实例解析C++/CLI中的担当与列举[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |