检查“this”是否为空是否合理?
在面向对象编程领域,“this”的概念,通常与当前对象的概念同义,起着至关重要的作用。然而,在这种情况下出现的一个问题是检查“this”是否为空是否有意义。
原始问题:
在与成员一起上课函数时,开发人员提出了这样的问题:
“如果我有一个方法,其中包含条件“this == nullptr”,并且结果为 true,则系统会指示我返回错误代码。如果"this" 确实为 null,说明该对象已被删除,该方法还能产生任何输出吗?"
标准 C 视角:
在标准 C 中,答案是否定的。根据定义,对空指针进行的调用是未定义的行为。任何依赖于检查“this”== null 的代码都是非标准的。值得注意的是,这也适用于非虚函数。
特定实现中的异常:
某些 C 实现允许“this == 0”,对标准行为提出警告。专门为此类实现而设计的库可能会利用此条件作为 hack,例如 VC 与 MFC 的配对。
其他注意事项:
超出严格的实现规则,其他因素可能会导致“this”== null 检查的存在。某些实例可以用作调试辅助工具,在先前由于调用者中的编码错误而遇到该情况时捕获错误。断言通常更适合此目的,为检测此类情况提供更合适的机制。
结论:
在标准 C 的上下文中,检查“this” == null 是不合理的。对空指针的方法调用本质上是未定义的行为,使得对此类检查的任何依赖都是不可靠的。如果在代码审查期间遇到这些检查,应该仔细检查并可能用更合适的错误处理机制替换。
以上是在 C 中检查'this”空值是否合理?的详细内容。更多信息请关注PHP中文网其他相关文章!