<分区>
有三种方法(据我所知)可以将指针初始化为空值:
1) 值初始化
T a = T(); // T is a pointer type
T a{}; // brace initializers don't suffer from the most vexing parse
即使 typedef
是必需的,这种形式在非通用代码中也能满足,例如
typedef int* ip;
int *p = ip();
2) 手动设置为nullptr
int *p = nullptr;
3) 设置为可隐式转换为任何指针类型的有效空指针常量
int *p = NULL;
每种方法的优缺点是什么?
是否存在每种方法都被认为最合适的用例?