首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在struct上隐藏无参数构造函数

在 C++ 中,结构体(struct)不能包含无参数构造函数。结构体的构造函数是由编译器自动生成的,它会自动为所有成员提供默认值。如果您希望禁止使用无参数构造函数,可以通过将结构体的构造函数设为私有(private)来实现。

例如:

代码语言:c++
复制
struct MyStruct {
private:
    MyStruct() {}  // 将无参数构造函数设为私有

public:
    int x;
    int y;

    MyStruct(int a, int b) : x(a), y(b) {}  // 定义带参数的构造函数
};

在这个例子中,我们将无参数构造函数设为私有,因此不能使用无参数构造函数来创建 MyStruct 对象。您需要使用带参数的构造函数来创建对象,例如:

代码语言:c++
复制
MyStruct obj(1, 2);  // 正确,使用带参数的构造函数创建对象
MyStruct obj2;  // 错误,无参数构造函数是私有的

请注意,这种方法只适用于结构体,不适用于类(class)。对于类,您需要使用 delete 关键字来删除无参数构造函数,例如:

代码语言:c++
复制
class MyClass {
public:
    MyClass(int a) : x(a) {}  // 定义带参数的构造函数

    int x;

    MyClass() = delete;  // 删除无参数构造函数
};

在这个例子中,我们使用 delete 关键字来删除 MyClass 的无参数构造函数,因此不能使用无参数构造函数来创建 MyClass 对象。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 领券