科技行者

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

知识库

知识库 安全导航

至顶网软件频道基础软件与用于 C++的 ISO 标准保持一致示例

与用于 C++的 ISO 标准保持一致示例

  • 扫一扫
    分享文章到微信

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

演示 Visual C++ 如何用于将 .NET 框架合并到 C++ 应用程序中。

作者:Kate Gregory 来源:Microsoft 开发人员网络 2007年10月28日

关键字: ISO C++ Linux

  • 评论
  • 分享微博
  • 分享邮件

示例

集合类尤其经常使用多个占位符。查找表所包含的值(数值、Employee 实例或日期、char* 字符串)由类型为整数、char* 字符串或日期的键索引。Pair 模板是使用两个占位符的简单类:

template <class A, class B>
class Pair
{
private:
    A index;
    B value;
public:
    Pair(A aa, B bb):index(aa),value(bb) {}
    void display(){cout << index << ' ' << value << endl;}
    bool operator>(const Pair<A,B>& p) { return index>p.index;}
};

Pair 并未作许多工作,但您可以想象相似的代码在灵活的集合解决方案的核心出现。它拥有索引和值的附件,显示它们,并且可以通过仅比较它们的值来比较两个 Pair 实例。当索引类型 A 是整数或其他数值类型,或者是已经执行了运算符的类时,它可以完全正确的运行。>.当索引类型是 char* 时,比较就没有意义了,因为 > 比较字符指针的数值地址,而不是它指向的字符。另外,索引的初始化不会产生字符的副本,只会产生指针的副本。

局部模板专用化是这样一种专用化:用特定类型代替一个占位符(本例中为 char*),而另一个则不需要。对于 Pairchar* 索引值的局部专用化如下所示:

template <class B>
class Pair<char*, B>
{
private:
    char* index;
    B value;
public:
    Pair(char* aa, B bb):value(bb) {index = new char[strlen(aa)];
 strcpy(index,aa);}
    void display() {cout << index << ' ' << value << endl;}
    bool operator>(const Pair<char*, B>& p)
     { return ( strcmp(index,p.index) > 0);}
};

上述代码在以前的 Visual C++ 版本下不能编译。然而,从 Visual C++ .NET 2003 版本以后,它就可以编译了。

查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

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

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