你如何强迫程序员不初始化空对象?

时间:2014-12-02 12:33:02

标签: c++ object constructor initialization

如果我想强迫其他程序员不在我的自定义类中初始化空对象,我该怎么做才能实现这个目标?

我猜测它与构造函数有关,但我不是100%肯定。

4 个答案:

答案 0 :(得分:3)

在C ++ 11及更高版本中,您可以delete使用默认构造函数。如果您的班级名为Foo,请使用

Foo() = delete;

您需要提供构建对象的替代方法。 (提供替代构造函数会隐式删除默认构造函数,但明确说明这一点会使代码更清晰。)

(在C ++ 11之前,你可以将默认构造函数声明为private而不提供定义。它的使用会导致编译器和链接器错误。)

答案 1 :(得分:1)

如果你想要一个带有未初始化成员变量的对象(这就是我解释“空对象”的方式),那么你应该构建一个构造函数来强制这些成员为空。

class Bar
{
    int* mem1;        
    int* mem2;

    Bar()
    {
        mem1=nullptr;
        mem2=nullptr;
    }
}

答案 2 :(得分:1)

如果通过为空,则表示在对象创建期间不传递任何参数, 然后让你的构造函数接受一个特定的值(没有任何默认值)

答案 3 :(得分:0)

要限制对象的数量,可以使用单例模式的变体来进行实例化。