目标
我想知道 C++ 中是否有“null”,就像NonePython 中或nilRuby 中的 a 一样。我也想知道你应该如何使用它。
代码
这是我编写的 C++ 代码。
#include <iostream>
int main()
{
bool value = _____; // Are you supposed to use 'null' with a 'bool' type?
std::cout << value;
}
Run Code Online (Sandbox Code Playgroud)
尝试
我尝试_____用null、nil、Null和替换Nil,但它们都不起作用!我什至尝试用_____andnone替换None,但我得到的只是这个错误消息(不完整的错误消息):
main.cpp: In function 'int main()':
main.cpp:5:16: error: 'None' was not declared in this scope
Run Code Online (Sandbox Code Playgroud)
Repl.it 网站甚至建议None改为clone. 我是不是该?
main.cpp:5:16: note: suggested alternative: 'clone'
Run Code Online (Sandbox Code Playgroud)
那么如何将“null”放入变量中,但 C++ 中是否存在“null”呢?
对于像 a 这样的东西bool,你有两个可能的值,true或者false。不存在第三个“缺乏价值”。
Python(我不能代表 Ruby)实现这种“缺乏价值”的方式是不实际存储true或false隐藏在表面之下,而是存储存储 true 或 false 的位置的地址。当您询问该值是多少时,它会转到该地址并进行检查。
这样,如果您想要“缺乏价值”,它只需将其存储的地址更改为空地址即可。这允许伪“第三可能值”。
您可以在 C++ 中通过使用布尔指针(即:)来完成此操作bool *b,但这可能不是一个好主意。根据您的情况,几乎肯定有更好的方法来处理“缺乏价值”。
或者,您可以使用enum三个可能的值,即:
enum valState { ISGOOD, ISBAD, ISNULL };
Run Code Online (Sandbox Code Playgroud)
这将允许您执行以下操作:
valState state = ISBAD;
if(state == ISNULL) { ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4006 次 |
| 最近记录: |