zoukankan      html  css  js  c++  java
  • c++11之二: 类成员变量初始化

    在C++11中,

    1、允许非静态成员变量的初始化有多种形式:初始化列表; 使用等号=或花括号{}进行就地的初始化。

    可以为同一成员变量既声明就地的列表初始化,又在初始化列表中进行初始化,只不过初始化列表总是看起来“后作用于”非静态成员。

    也就是说,初始化列表的效果总是优先于就地初始化的。

    #include <iostream>
      2 using namespace std;
      3 class CBase{
      4     public:
      5     CBase(){cout<<"mem default="<<mem<<endl;}
      6     CBase(int i):mem(i){cout<<"mem init="<<mem<<endl;}
      7     int mem{10};
      8 };
      9 
     10 int main(){
     11     CBase objA;
     12     CBase objB(5);
     13 }

    mem default=10
    mem init=5

    2、非常量的静态成员变量,与c++98保持一致。需要到头文件以外去定义它,这会保证编译时,类静态成员的定义最后只存在于一个目标文件中。

    3、静态常量成员,除了const关键字外,还可以使用constexpr来对静态常量成员进行声明。

  • 相关阅读:
    关于登录或授权页面的错误提示
    弱网环境模拟工具
    Android Fragment 深度解析
    排序算法(七)
    排序算法(六)
    排序算法(五)
    java之数组
    排序算法(四)
    排序算法(三)
    排序算法(二)
  • 原文地址:https://www.cnblogs.com/zxpo/p/3891981.html
Copyright © 2011-2022 走看看