当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:56:00  来源:本站整理

实例解析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++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • Windows 7远程帮忙利用实例解析
  • Java程序最简单犯的21种错误实例解析
  • 基于J2EE的电子商务网站实例解析
  • 实例解析C++/CLI的串行化
  • 实例解析C++/CLI的"克隆"
  • 实例解析C++/CLI线程之多任务
  • 实例解析C++/CLI线程之线程状况长期性
  • <b>实例解析C++/CLI之开卷有益</b>
  • <b>实例解析C++/CLI之值范例</b>
  • <b>实例解析C++/CLI之代理与事件</b>
  • 实例解析C++/CLI之静态构造函数
  • 实例解析C++/CLI中的担当与列举
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .