GCC上实现nullptr的疑问

老邓 2010-09-24 05:32:41
加精
#include <iostream>

using namespace std;

const class nullptr_t
{
public:
template<typename T> operator T*() const { return (T*)0; }
template<typename C, typename T> operator T C::*() const { return (T*)0; }
private:
void operator&() const;
} nullptr = {};

int main()
{
int* p1 = nullptr;
// cout << &nullptr << endl; // error: 'void nullptr_t::operator&() const' is private
return 0;
}


疑问一:这个操作符重载对应什么例子?
template<typename C, typename T> operator T C::*() const { return (T*)0; }


疑问二:是否还有更好的写法?
...全文
2984 174 打赏 收藏 转发到动态 举报
写回复
用AI写文章
174 条回复
切换为时间正序
请发表友善的回复…
发表回复
江北百晓生 2011-12-01
  • 打赏
  • 举报
回复
C++11中有nullptr可是在那个头文件中定义的啊
LayzerAr 2010-11-19
  • 打赏
  • 举报
回复
Mark
忘了,重新回来看一下
yewuyu 2010-10-10
  • 打赏
  • 举报
回复
saving
贪食蛇男 2010-10-09
  • 打赏
  • 举报
回复
语法糖太多了……
adventurelw 2010-10-07
  • 打赏
  • 举报
回复
这不是转换函数么?怎么变成操作符重载了?
ericbill 2010-09-30
  • 打赏
  • 举报
回复
不错,很好
yeasener 2010-09-29
  • 打赏
  • 举报
回复
唉,学习中
qqwx_1986 2010-09-29
  • 打赏
  • 举报
回复
还是NULL好
wjlsmail 2010-09-28
  • 打赏
  • 举报
回复

#ifdef __CPLUSPLUS
#define NULL 0
#else
#define NULL (void *)0
#endif


赵4老师 2010-09-28
  • 打赏
  • 举报
回复
操作符重载是一颗语法糖(不要以为糖都是甜的!)
龙哥依旧 2010-09-28
  • 打赏
  • 举报
回复
101
daliancat1984 2010-09-28
  • 打赏
  • 举报
回复
template<typename C, typename T> operator T C::*() const { return (T*)0; }
真是小问题引发的大讨论~~
cwq408138525 2010-09-28
  • 打赏
  • 举报
回复
顶顶顶顶顶顶顶顶顶顶顶
六六木木 2010-09-28
  • 打赏
  • 举报
回复
能实现吗???
luoqi 2010-09-27
  • 打赏
  • 举报
回复
我的意思是,为了解决一个简单的问题,复杂化了!

为了解决
void f(const char*);
void f(int);
//
在参数调用时的不明确,而
1.产生一个新的类型
2.再多一个函数调用
3.内存中多块(nullptr)
...

估计是我脑子进水了!
luoqi 2010-09-27
  • 打赏
  • 举报
回复
[Quote=引用 151 楼 sammylan 的回复:]

额那个汗....
看imperfect C++吧
这nullptr,static_assert.....N年前就有了
[/Quote]

C++的花样还真是多啊!?
但我不知道他们为什么把简单的问题,那么复杂化!!!
要是这样,我只会点C,那不是成古董了!!!!!!!!!
laorenjia123 2010-09-27
  • 打赏
  • 举报
回复
好文章
tihb666 2010-09-27
  • 打赏
  • 举报
回复
楼层好高啊..
zmkkobe 2010-09-27
  • 打赏
  • 举报
回复
学习一下。
思危 2010-09-27
  • 打赏
  • 举报
回复
C++越搞越复杂,难怪总是被人拍砖啊
加载更多回复(150)

64,663

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧