• C/C++在构造函数中对成员变量初始化的两种方式


      今天看到一个构造函数,一下子有点懵了,今天就来复习构造函数为成员变量赋值的两种方式吧。

    CProtocol::CProtocol(UINT32 dwType) : m_dwType(dwType)
    {
        m_message = NULL;
        m_sessionID = 0;
        m_debug = false;
        m_Compress = false;
    }

      


    首先要了解的是初始化成员变量的两种方式:

    class A{
    public:
        int m_a;
        int m_b;
        A(int a,int b);
    
    }
    //采用初始化列表
    A:A(int a,int b):m_a(a),m_b(b){
    
    }
    //采用构造函数内赋值
    A:A(int a,int b){
        m_a = a;
        m_b = b;
    }

    可以看到成员变量初始化的两种方式:采用初始化列表/采用构造函数内赋值的方式是比较明显的。而前面我们看到的就是这两种形式一起用的一种场景。

    要注意的是,成员变量的初始化顺序与初始化列表中列出的变量的顺序无关,它只与成员变量在类中声明的顺序有关。请看代码:

    A:A(int b):m_b(b),m_a(m_b){
    
    }
    //运行结果: 2130567168, 100

    可以看到的是,虽然从初始化列表的顺序是b先赋值给m_b然后m_b赋值给m_a。但初始化列表初始化的顺序是和声明的顺序有关的,实际上是m_a先被为赋值的m_b初始化了。

  • 相关阅读:
    字典的操作用法小总结
    HTTP Headers解析
    RStdio常用快捷键
    R语言数据类型
    数据科学实战手册(R+Python)书中引用资料网址
    ggplot2使用初探
    urllib2使用初探
    R语言以及RStdio的安装
    目标检测--Selective Search for Object Recognition(IJCV, 2013)
    关于Python的lambda
  • 原文地址:https://www.cnblogs.com/doggod/p/13359598.html
Copyright © 2020-2023  润新知