某日二师兄参加XXX科技公司的C++工程师开发岗位第30面:
面试官:什么是空指针?
二师兄:一般我们将等于0/NULL/nullptr的指针称为空指针。空指针不能被解引用,但是可以对空指针取地址。
- int* p = nullptr; //空指针
- *p = 42; //空指针不可以解引用
- int** pp = &p //空指针可以取地址
复制代码面试官:你知道0/NULL/nullptr三者之间的区别吗?
二师兄:虽然三者都能定义空指针,但三者类型不同。
二师兄:0是int类型,NULL在g++下是一个宏定义,而nullptr是有类型的;
- #define NULL ((void *)0)
- typedef decltype(nullptr) nullptr_t;
- sizeof(0);// 4
- sizeof(NULL);//8
- sizeof(nullptr);//8
复制代码二师兄:在函数重载时,会根据实参的类型选择重载函数:
[code]#include void fun(int) {std::cout |