为什么空构造函数是必需的?

时间:2015-03-15 18:24:50

标签: c++

我有以下两个类:

class Image
{
public:
    Image(int size) { _size = size; };
    ~Image();

private:
    int _size;
};


class Renderer
{
public:
    Renderer(int size = 10) { _image = {size}; };
    ~Renderer();
private:
    Image _image;

};

编译时我得到:"没有合适的默认构造函数"。 如果我添加Image();,则错误消息消失。

所以我的问题是,为什么空构造函数是必要的?它会在哪种情况下被召唤?

2 个答案:

答案 0 :(得分:3)

因为在Renderer的构造函数中,必须首先构造Image成员,然后才能输入构造函数体。在您的Renderer构造函数体中,您分配给该成员,您不会构建它。

如果你这样做,错误消失而不必为Image提供默认构造函数:

Renderer(int size=10): _image(size) { }

答案 1 :(得分:1)

您正在Rendered类中创建一个成员" Image _image" ...在创建时没有传递任何参数。要处理这种无参数对象创建,需要使用默认构造函数