为什么构造函数在我的程序中调用了两次?

ara*_*guy 0 c++

以下程序中World对象的构造函数被调用两次.

头文件:

#ifndef GAME_H
#define GAME_H
#include "World.h"

class Game
{
    public:
        Game();
    private:
        World world;
};
Run Code Online (Sandbox Code Playgroud)

cpp文件: -

#include "Game.h"

Game::Game()
{
    world = World();
}
Run Code Online (Sandbox Code Playgroud)

世界级的头文件: -

#ifndef WORLD_H
#define WORLD_H

class World
{
    public:
        World();
};
#endif // WORLD_H
Run Code Online (Sandbox Code Playgroud)

世界级的cpp文件: -

#include "World.h"
#include <iostream>

using namespace std;

World::World()
{
    cout<<"i am going to print twice"<<endl;
}
Run Code Online (Sandbox Code Playgroud)

Mik*_*our 6

每个成员在构造函数开始之前自动初始化; 因为你没有包含world在初始化列表中,所以在那时默认初始化,调用你的构造函数.

然后创建一个临时对象来分配给它; 导致第二个构造函数调用.没有必要这样做.