现代C++实践100练:为什么使用nullptr代替NULL?因为它更加风骚

在讲这个问题之前,我想先说下本文的风格,这也是我写作的风格,通常我不会像教科书一般上来就直说概念和道理,我喜欢用已知,大家可以理解的问题去引入一个知识,这是我自己的学习方法,也希望介绍给大家。

例如本文,很多人可能不知道nullptr,也不知道为什么要引入它,但是大家都知道NULL,通过NULL引入,就往往容易接受的多。

现代C++实践100练:为什么使用nullptr代替NULL?因为它更加风骚

本文你可以得到什么

你可以知道一个极其好用没用难度的新特性 nullptr

你可以知道为什么C++要用nullptr代替NULL

你可以在以后的编程中使用更加风骚的nullptr

(本文面向小白,大佬勿喷)

问题叙述

之前,我们对指针进行初始化的时候往往使用NULL,在当时看来那并没有问题!

void* ptr =NULL;

但是在某种意义上来说,传统 C++ 会把 NULL、0 视为同一种东 西,这取决于编译器如何定义 NULL,有些编译器会将 NULL 定义为 ((void*)0),有些则会直接将其定义 为 0。

那么这样会出现什么问题呢?

没有了 void * 隐式转换的 C++ 只好将 NULL 定义为 0。而这依然会产生新的问题,将 NULL 定义 成 0 将导致 C++ 中重载特性发生混乱。考虑下面这两个函数:

void Function(char *);
void Function(int);

此时如果编译器将NULL定义为0,那么根据重载的特性,Function(NULL)将调用void Function(int);

这明显是不符合道理的!

所以nullptr横空出世,使用它没有什么阵痛,成为了我最喜欢用的新特性。

nullptr

C++11 引入了 nullptr 关键字,专门用来区分空指针、0。而 nullptr 的类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值