zoukankan      html  css  js  c++  java
  • C++ 初始化和赋值的区别

    最近在读Effective C++,有一些可能大家比较容易忽略的问题,特地写出来和大家分享一下!

    Item4:Make sure that objects are initialized before they're used. (确保对象被使用前已经被初始化)

    对于这个条款,相信大家都有了足够深入的了解,我只想提一点的就是赋值(assignments)和初始化(initializations)的区别.我将用一个实例来讲解二者的区别:

    class Student
    {
    public:
        //*/ 赋值初始化
        Student(const string &name, const int age, const string &gender)
        {
            m_name = name;
            m_age = age;
            m_gender = gender;
        }
        //*/
    
        //*/ 初始化列表
        Student(const string &name, const int age, const string &gender) : 
          m_name(name), m_age(age), m_gender(gender)
        {
    
        }
        //*/
    
    private:
        string m_name;
        int m_age;
        string m_gender;
    };

    这里衍生出一个问题: 什么时候用初始化列表?什么时候用赋值初始化?

    1. 对于基本数据类型,二者是没有区别的。

    2. 对于非基本数据类型,比如:string,或者其他自定义的类,初始化列表的效率要比赋值初始化高!这是为什么呢?且看如下代码:

  • 相关阅读:
    微服务之SpringCloud基础
    java 多线程学习
    tomcat性能优化
    js模块化规范
    jsonp及cors
    es6之各种数据类型的扩展
    es6之Promise
    es6之Set和Map
    es6之Generator
    es6之Iterator
  • 原文地址:https://www.cnblogs.com/nchxmoon/p/2622702.html
Copyright © 2011-2022 走看看