兔子的技术博客

兔子

   :: 首页 :: 联系 :: 聚合  :: 管理
  202 Posts :: 0 Stories :: 43 Comments :: 0 Trackbacks

留言簿(10)

最新评论

阅读排行榜

评论排行榜

(注意:经测试,VS2010 不支持该特性)

C++0x带来的委托构造函数(delegate constructor),说白了,其实就是在某一个构造函数中调用另外一个构造函数,实际上,类似的特性在Java中早已经存在了,好像就是在构造函数之后跟上Base()来实现的。

委托构造函数确实能够带来一些便利,常常,我们需要在两个相类似的构造函数中实现相同的功能,在以往,我们也许会通过将这些相同的功能集中到一个init()中来实现,两个构造函数调用同一个函数。现在C++0x有了委托构造函数,我们可以将这些相同的功能在某个基础的构造函数中实现,另外一个构造函数调用这个基础构造函数就可以了。一个简单的例子是:

#include <iostream>
using namespace std;
// 正数类
class PositiveNumber
{
public:
// 带参数的构造函数,附带了对参数进行检查的功能 
PositiveNumber(int x)
 {
  if( x < 0)
   throw "必须为正数";
  _x = x;
 }
// 不带参数的默认构造函数,以1为参数委托调用带参数的构造函数
PositiveNumber(): Positive{1}
 {}

private:
 int _x;
};

int main(int argc, char *argv[])
{ 
 PositiveNumber one;
 PositiveNumber two(2);
 return 0;
}

委托构造函数,省去了为了实现共同功能需要另外的intit()函数,为编码带来了便利。



转自:http://blog.csdn.net/shellching/archive/2010/04/20/5506019.aspx
posted on 2011-05-27 09:16 会飞的兔子 阅读(1606) 评论(0)  编辑 收藏 引用 所属分类: C++及开发环境

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理