科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件实例解析C++/CLI中的继承与枚举

实例解析C++/CLI中的继承与枚举

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文中,将要介绍与继承相关的C++/CLI主题,并以现实生活中银行交易的三种形式:存款、取款、转账,来说明类的继承体系,且以一种新的枚举形式来实现。

作者:谢启东编译 来源:天极开发 2007年11月12日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
 枚举与继承

  一个CLI enum类型通常实现为一个值类型,且隐式继承自System::Enum。同样地,此类型的静态与实例成员,它们的基类System::ValueType与类型的基类System::Object,在CLI enum类型或此类型的任意实例中,都可以访问到。插2是例7的输出。

  例7:

using namespace System;

public enum class Color {Black, White, Red};
public enum class TransactionType :
unsigned char {Deposit, Withdrawal, Transfer};
int main()
{
 Color c = Color::White;

 /*1*/ Console::WriteLine("Color::Red's name is >{0}<",
 Enum::GetName(c.GetType(), Color::Red));
 Console::Write("Color's members are:");

 /*2*/ array<String^>^ names = Enum::GetNames(Type::GetType("Color"));
 for each (String^ s in names)
 {
  Console::Write(" {0}", s);
 }
 Console::WriteLine();

 /*3*/ Console::WriteLine("The type underlying Color is >{0}<",
 Enum::GetUnderlyingType(Color::typeid));

 /*4*/ Console::WriteLine("The type underlying TransactionType is >{0}<",
 Enum::GetUnderlyingType(TransactionType::typeid));
}

  插2:例7的输出

Color::Red's name is >Red<
Color's members are: Black White Red
The type underlying Color is >System.Int32<
The type underlying TransactionType is >System.Byte<

  在标号1中,调用了Enum::GetName以找出特定enum类型枚举器的名称,第一个参数必须为System::Type类型,而获取它的一个方法就是通过对感兴趣的变量调用Object::GetType。

  在标号2中,调用了Enum::GetNames以找出特定enum类型全部枚举器的名称,第一个参数必须为System::Type类型,而获取它的一个方法就是通过对感兴趣的变量(其以字符串形式表示的名称)调用Type::GetType。

  在标号3及标号4中,调用了Enum::GetUnderlyingType以找出这两个CLI enum类型的底层类型,此处使用了一个更简单的方法用于找出类型的Type对象--新形式的typeid操作符。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章