相关疑难解决方法(0)

空引用是否可行?

这段代码是否有效(和定义的行为)?

int &nullReference = *(int*)0;
Run Code Online (Sandbox Code Playgroud)

这两个g ++以及铛++编译它没有任何警告,即使使用-Wall,-Wextra,-std=c++98,-pedantic,-Weffc++...

当然,引用实际上不是null,因为它无法访问(这意味着取消引用空指针),但我们可以通过检查其地址来检查它是否为null:

if( & nullReference == 0 ) // null reference
Run Code Online (Sandbox Code Playgroud)

c++ null reference language-lawyer

91
推荐指数
4
解决办法
10万
查看次数

c ++使用空指针访问静态成员

最近尝试了以下程序,它编译,运行正常并产生预期的输出,而不是任何运行时错误.

#include <iostream>
class demo
{
    public:
        static void fun()
        {
            std::cout<<"fun() is called\n";
        }
        static int a;
};
int demo::a=9;
int main()
{
    demo* d=nullptr;
    d->fun();
    std::cout<<d->a;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果未初始化的指针用于访问类和/或结构成员,则行为未定义,但为什么允许使用空指针访问静态成员.我的计划有什么危害吗?

c++ static-members nullptr language-lawyer c++11

22
推荐指数
1
解决办法
3618
查看次数

标签 统计

c++ ×2

language-lawyer ×2

c++11 ×1

null ×1

nullptr ×1

reference ×1

static-members ×1