如果我想强迫其他程序员不在我的自定义类中初始化空对象,我该怎么做才能实现这个目标?
我猜测它与构造函数有关,但我不是100%肯定。
答案 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)
要限制对象的数量,可以使用单例模式的变体来进行实例化。