科技行者

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

知识库

知识库 安全导航

至顶网软件频道基础软件Bjarne:必须在类声明处赋予数据吗?

Bjarne:必须在类声明处赋予数据吗?

  • 扫一扫
    分享文章到微信

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

不必须。如果一个接口不需要数据时,无须在作为接口定义的类中赋予数据。代之以在派生类中给出它们。参见“为什么编译要花这么长的时间?”。

作者:Molly 来源:天极网 2007年10月27日

关键字: Bjarne 声明 数据 Linux

  • 评论
  • 分享微博
  • 分享邮件
 不必。如果一个接口不需要数据时,无须在作为接口定义的类中赋予数据。代之以在派生类中给出它们。参见“为什么编译要花这么长的时间?”。

  有时候,你必须在一个类中赋予数据。考虑一下复数类的情况:

template<class Scalar> class complex {
public:
 complex() : re(0), im(0) { }
 complex(Scalar r) : re(r), im(0) { }
 complex(Scalar r, Scalar i) : re(r), im(i) { }
 // ...

 complex& operator+=(const complex& a)
 { re+=a.re; im+=a.im; return *this; }
 // ...
private:
 Scalar re, im;
};

  设计这种类型的目的是将它当做一个内建(built-in)类型一样被使用。在声明处赋值是必须的,以保证如下可能:建立真正的本地对象(genuinely local objects)(比如那些在栈中而不是在堆中分配的对象),或者使某些简单操作被适当地inline化。对于那些支持内建的复合类型的语言来说,要获得它们提供的效率,真正的本地对象和inline化都是必要的。

查看本文来源

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

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

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