在C++中对空对象进行fucntion调用时返回的布尔值是多少?
ClassDummy* dummy = NULL;
if (!dummy->dummy_function(1,2,3)) {
// Do Something
}
Run Code Online (Sandbox Code Playgroud)
根据C++ 11标准,这不应该返回错误吗?
通过空指针调用方法具有未定义的行为。该代码无效,但编译器不需要告诉您它是无效的。
C++ 标准定义了许多情况,即使代码无效,编译器也不需要给出“诊断”。在很多情况下,原因只是因为编译器很难确定代码是否有效。在您的特定代码中,这非常简单,如果您使用正确的警告级别,某些编译器实际上可能会发出警告。但是,构造一个更复杂的示例并不会太困难,其中编译器无法轻松判断指针是否为空。在编译器不需要给出诊断之前,准确标准化代码的复杂程度是很困难的,而且可能毫无意义,因此只能由每个实现来做出决定。
| 归档时间: |
|
| 查看次数: |
284 次 |
| 最近记录: |