空指针可访问

 maniac0207 发布于 2023-01-19 14:11

我想知道为什么以下小程序不会导致NullPointerException.有任何想法吗?输出是2x Hello World !!! 在我的macbook上使用clang-500.2.79.

#include 

using namespace std;

class Strange {
public:
    Strange() {}
    virtual ~Strange() {}
    void sayHello() {
        cout<sayHello();
    (*s).sayHello();
    return 0;
}

Reinstate Mo.. 8

C++没有"NullPointerException".取消引用空指针只是未定义的行为,任何事情都可能发生.

在您的情况下,sayHello()根本不访问*this,所以它恰好"正常"工作(在您的编译器,优化设置,运行时和HW).但这并不能保证.未定义的行为是未定义的; 该程序也可以在线崩溃或订购披萨.

1 个回答
  • C++没有"NullPointerException".取消引用空指针只是未定义的行为,任何事情都可能发生.

    在您的情况下,sayHello()根本不访问*this,所以它恰好"正常"工作(在您的编译器,优化设置,运行时和HW).但这并不能保证.未定义的行为是未定义的; 该程序也可以在线崩溃或订购披萨.

    2023-01-19 14:14 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有