C++ 11中一些新的关键字用法

C++ 11

nullptr

nullptr 是用于解决 NULL 和 0 的有疑义关系的。NULL 通常被义为(void*)0。在
如下应用中会引发歧义。

#include <iostream>
using namespace std;
void f(int){}
void f(bool){}
void f(void*){}
int main()
{
    f(0);// calls f(int), not f(void*)
    f(NULL);// might not compile, but typically calls f(int). Never calls f(void*)
    f(nullptr); // calls f(void*) overload
}

1) C++ 视 0 首先为 int 型,因此,调用 f(0) 即调用 f(int)

2) NULL 的情况复杂些,C++ 首先视其为广义整型。假如 NULL 被定义为普通
的 0,则调用 f(int);
如果 NULL 被定义成 0L,则 long -> int, long -> bool, 0L -> void*, 这三
种情况都是合法的,此时,编译器会报错

3) 使用 nullptr,则不会有重载函数调用模糊的问题
- nullptr 不属于广义整型,也不是普通意义上的指针。
- nullptr 的实际类型是 std::nullptr_t,它能够隐式的转换成所有的原始指针
            类型,故可将其视为一个可指向所有类型的指针。

final

关键字 final 有两个用途。第一,它阻止了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可能只会写BUG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值