首页 > 编程语言 > 详细

C++编程规范之48:在构造函数中使用初始化代替赋值

时间:2014-03-01 06:45:18      阅读:507      评论:0      收藏:0      [点我收藏+]

摘要:

    设置一次,到处是用:在构造函数中,使用初始化代替复制来设置成员变量,能够防止发生不必要的运行时操作,而输入代码的工作量则保持不变。

    构造函数会在系统内部生成初始化代码。考虑如下代码:

class Employee
{
         string firstName, lastName;
public:
         Employee(){ firstName ="Leo"; lastName = "Chu" }
};


    实际上,生成的构造函数代码将类似于:

Employee():firstName_(), lastName_(){ firstName_ = "Leo"; lastName_ ="Chu" }

    也就是说,并未显式初始化的对象将使用其默认构造函数自动初始化,然后使用复制操作符进行赋值。非简单(nontrivial)对象的赋值操作符所做的比构造函数还稍多一点,因为它要处理已经构造了的对象。

有话直说最好:在初始化列表中初始化成员变量,代码表达意图更加明确,而且锦山添花的是,代码通常还会更小、更快。

Employee():firstName_("Leo"), lastName_("Chu"){  }

    这可不是不成熟的优化,这是在避免不成熟的劣化。

例外情况:

    应该总是在构造函数体内而不是初始化列表中执行非托管资源获取,比如并不立即将结果传递给智能指针构造函数的new表达式。当然,最好是一开始就没有这种不安全的无属主资源。

C++编程规范之48:在构造函数中使用初始化代替赋值,布布扣,bubuko.com

C++编程规范之48:在构造函数中使用初始化代替赋值

原文:http://blog.csdn.net/longshengguoji/article/details/20130351

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!