gpt4 book ai didi

c++ - 如何防止默认初始化具有类类型的 const 变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:12:32 26 4
gpt4 key购买 nike

我有一个自定义类,我希望它的行为像一个内置类型。

但是我注意到您可以在不提供初始值的情况下初始化该类的常量变量。我的类当前有一个空的默认构造函数。

这是 int 和我的类 foo 的比较:

int a;              // Valid
int a = 1; // Valid
const int a = 1; // Valid
const int a; // Error

foo a; // Valid
foo a = 1; // Valid
const foo a = 1; // Valid
const foo a; // Should cause an error, but it compiles

如你所见,我需要阻止

const foo a;

来自编译。

C++ 专家有什么想法吗?

最佳答案

它只有在有默认构造函数的情况下才会编译,因为有默认构造函数才编译,也就是说它被初始化了。如果您不想编译该行,只需禁用默认构造函数(也会使 foo a; 成为一个错误,这是一种不需要的副作用)。没有 foo 的定义或者你想做什么,这是我所能得到的。

我不认为有任何方法可以实现你想要的(即允许非 const 变量被默认初始化,同时让 const 版本编译失败并允许其他用例 - 需要提供构造函数)

关于c++ - 如何防止默认初始化具有类类型的 const 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8182314/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com