在 C++ 中,结构体(struct)不能包含无参数构造函数。结构体的构造函数是由编译器自动生成的,它会自动为所有成员提供默认值。如果您希望禁止使用无参数构造函数,可以通过将结构体的构造函数设为私有(private)来实现。
例如:
struct MyStruct {
private:
MyStruct() {} // 将无参数构造函数设为私有
public:
int x;
int y;
MyStruct(int a, int b) : x(a), y(b) {} // 定义带参数的构造函数
};
在这个例子中,我们将无参数构造函数设为私有,因此不能使用无参数构造函数来创建 MyStruct 对象。您需要使用带参数的构造函数来创建对象,例如:
MyStruct obj(1, 2); // 正确,使用带参数的构造函数创建对象
MyStruct obj2; // 错误,无参数构造函数是私有的
请注意,这种方法只适用于结构体,不适用于类(class)。对于类,您需要使用 delete
关键字来删除无参数构造函数,例如:
class MyClass {
public:
MyClass(int a) : x(a) {} // 定义带参数的构造函数
int x;
MyClass() = delete; // 删除无参数构造函数
};
在这个例子中,我们使用 delete
关键字来删除 MyClass 的无参数构造函数,因此不能使用无参数构造函数来创建 MyClass 对象。
领取专属 10元无门槛券
手把手带您无忧上云