zoukankan      html  css  js  c++  java
  • [C++] 构造函数初始化列表

    C++ 类中构造函数中成员变量的初始化方式有两种:

    1、构造函数体内(常用方式)

    class Student {
    private:
        int a;
        int b;
    public:
        // 错误,只是将a/b赋给形参,没有赋值给成员变量
        explicit Student(int a, int b) {
            a = a;
            b = b;
        }
        // 正确
        explicit Student(int a, int b) {
            this->a = a;
            this->b = b;
        }
        // 正确
        explicit Student(int a1, int b1) {
            a = a1;
            b = b1;
        }
    };

    2、构造函数初始化列表

    class Student {
    private:
        int a;
        int b;
    public:
        // 按照成员变量定义的顺序赋值,而不是冒号后的顺序
        // 下面两种方式意义相同
        explicit Student(int a, int b) : a(a), b(b) {
    //  explicit Student(int a, int b) : b(b), a(a) {
            cout << a << ' ' << b << endl;
        }
    };

    这两种方式,对于基本类型成员没有区别,但是对复杂类型成员(比如类,结构体等),第二种效率更高,第一种会调用一次默认的构造函数,在类构造函数里又会调用一次成员的构造函数再赋值;第二种仅在初始化列表里调用一次成员的构造函数并赋值。

    下面情况必须使用初始化列表:

    1、在派生类中构造函数中初始化提供父类的初始化

    2、如果成员是常量或引用,成员无法使用赋值的方式,只能在初始化列表中初始化

    3、成员变量是类类型

  • 相关阅读:
    5.2 输出一张随机图片
    5.1 Request 获取请求数据的几种方法
    5.Servlet 对象(request-response)
    4.Servlet(动态web资源)
    复选框、单选按钮、下拉列表的定义
    选择屏幕输入值的控制
    屏幕元素创建的基本语法
    屏幕对象的F1/F4输入帮助功能
    函数alv下的颜色设置
    BDIA增强
  • 原文地址:https://www.cnblogs.com/lialong1st/p/12060592.html
Copyright © 2011-2022 走看看