0,NULL和nullpter
2024-09-05 16:53:53
#include <iostream>
using namespace std;
void f(int)
{
cout<<"f(int)"<<endl;
} void f(bool)
{
cout<<"f(bool)"<<endl;
} void f(void*)
{
cout<<"f(void*)"<<endl;
} int main()
{
f(0);
f(NULL);
f(nullptr); return 0;
}
在C++中:
1. 0首先会被视为int,所以这里调用f(int)。
2. 对于NULL,C++首先视其为广义整形,如果被定义为普通的0,那么调用f(int),如果是0L,由于long->void* ,long->int,long->void*都是合法的,所以编译会出错。
3. 对于nullptr,不属于广义整型,也不属于普通意义上的指针,它可以隐式转化为任何的的原始指针类型,故可以将其理解为一个可以指向任何类型的指针。
比如:
使用0和f比较,一时不能够确定是广义整型还是指针类型,而nullpter则只会被认为是指针类型,故不会产生产生二义性。
最新文章
- 单例模式(Java)
- Eclipse10个最有用的快捷键[From: Internet]
- Dynamics AX7 materials
- 安卓app设计规范整理和Android APP设计篇(转)
- hbase体系结构以及说明
- POJ 3311 Hie with the Pie(Floyd+状态压缩DP)
- 可变长参数列表误区与陷阱——va_arg不可接受的类型
- Copy-and-swap
- xp+WinDBG+VMware调试内核
- 记录一个pom文件
- 编程菜鸟的日记-初学尝试编程-C++ Primer Plus 第6章编程练习5
- [模板] 匈牙利算法&;&;二分图最小字典序匹配
- [Kubernetes]谈谈Kubernetes的本质
- Go Web:Cookie
- Spark SQL整体架构
- 测试工具之ab
- HTMLParser 笔记
- mysql互为主从实战设置详解及自动化备份(Centos7.2)
- vue 监听对象里的特定数据
- oracle 视图views