由using
轻度封装的指针的默认构造函数是否始终返回nullptr
?“使用”(typedef)指针:其默认构造函数返回nullptr?
换句话说,这个函数总是返回nullptr吗?
using GOID = Go_id*; //some outer scope
GOID f(){
return GOID(); //always nullptr?
}
我测试了很多次;它始终是nullptr
。
但是,我不确定我是否幸运,或者它是C++规范。
由using
轻度封装的指针的默认构造函数是否始终返回nullptr
?“使用”(typedef)指针:其默认构造函数返回nullptr?
换句话说,这个函数总是返回nullptr吗?
using GOID = Go_id*; //some outer scope
GOID f(){
return GOID(); //always nullptr?
}
我测试了很多次;它始终是nullptr
。
但是,我不确定我是否幸运,或者它是C++规范。
这是value initialisation并且是的,考虑到指针类型,在这种情况下它将始终为零。从链接引用;
值初始化的效果是:
... [删除不属于该指针型的情况下] ...
4)否则,该目的是零初始化
是的,根据C++标准使用表达式T()其中T是指针类型返回空指针。
这与typedefs无关。
指针类型的值初始化(即T()
)执行零初始化。 GOID
是一个指针类型,所以你得到零。
感谢链接到规范!这正是我一直在寻找的。 – javaLover
@javaLover请注意,cppreference不是规范,虽然它通常很精确。 – TartanLlama
@javaLover。我发现该网站非常有用 - 并且通常更容易吸收完整的规范。 – Niall