zoukankan      html  css  js  c++  java
  • C++:只用初始化列表初始化变量的几种情况

    1.类成员函数中const变量的初始化(也就是第一点)

    有几个容易混淆的地方: 
    (1)const 的变量只能通过构造函数的初始化列表进行初始化;(貌似在C++11中可以正常编译) 
    (2)static 的变量只能通过在类外重新定义进行初始化; 
    (3)static const 变量 只能通过在类中直接用”=”进行赋值。

    # include <iostream>
    using namespace std;
    class A {
        private:
            static int a;
            static const double b = 2;
            const int c;
        public:
            A():c(1) {}
            int geta() {
                cout << "lalal" << endl;
                return a;
            }
    };
    
    int A::a = 1;
    
    int main(void) {
        A a;
        cout << a.geta() << endl;
        return 0;
    }

     

    2.类成员中有引用

    当类成员中含有引用,在构造函数中一定要通过初始化列表对引用进行初始化。

    在网上看到一句写的很好的话:“const对象或引用只能初始化但是不能赋值。构造函数的函数体内只能做赋值而不是初始化,因此初始化const对象或引用的唯一机会是构造函数函数体之前的初始化列表中。”

    3.类成员中包含一个不含默认构造函数的类的对象

    当类成员中包含一个不含默认构造函数的类的对象,一定要在构造函数的初始化列表进行初始化。

    4.派生类初始化基类

    派生类初始化基类的成员要通过派生类的构造函数的初始化列表调用基类的构造函数。

  • 相关阅读:
    DataList嵌套DataList
    Enterprise Library: Data Access Application Block类设计分析篇
    一些web开发中常用的、做成cs文件的js代码 搜刮来的
    DataList小结
    kill 某个线程
    在JBOSS下发布Web程序
    调整命令行的列数和行数 mode con: cols=100 lines=10000
    了解JavaScript类
    http
    Notepad++文本比较插件:Compare
  • 原文地址:https://www.cnblogs.com/kaishan1990/p/6526547.html
Copyright © 2011-2022 走看看