C++是很危险的:第一章 构造函数:第三节 构造函数与初始化列表

《C++是很危险的》中的代码全部来自网络及各种C++相关的书籍。 目的不是为了谴责C++, 而是希望大家注意C++中的某些细节。 这些细节在实际工程中根本用不到,所以大家就当笑话看看就好。

以下代码会输出几次"Hello world!"

#include <iostream>

using namespace std;

class Object
{
public:
    Object(int a=0)
    {
        cout<<"Hello world!"<<endl;
    }
};

class CA
{
public:
    CA()
        :o(1)
    {
    }
private:
    Object o;
};

class CB
{
public:
    CB()
    {
        o=1;
    }
private:
    Object o;
};

int main()
{
    CA ca;
    CB cb;
    return 0;
}

答案

3次。

解释

初始化列表会先于构造函数执行。

目录啦啦啦