以下程序中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)
每个成员在构造函数开始之前自动初始化; 因为你没有包含world在初始化列表中,所以在那时默认初始化,调用你的构造函数.
然后创建一个临时对象来分配给它; 导致第二个构造函数调用.没有必要这样做.
| 归档时间: |
|
| 查看次数: |
310 次 |
| 最近记录: |