读书人

为何重载operatoramp;的类不能被前置声明

发布时间: 2013-06-26 14:29:32 作者: rapoo

为什么重载operator&的类不能被前置声明
今天看了一下google c++的编程风格指南,其中关于重载运算符的时候,说到这么一句:重载operator&的类不能被前置声明,然后我试验的一下,编译正常,运行正常,不太明白为什么说不能前置声明,求各路大神指教一下。
ps:重载operator&的函数就是直接返回了this指针的
CTest* operator&()
{
return this;
} google编程风格指南 重载operator&
[解决办法]
是不能还是不要?
[解决办法]
坐等答案,留个标记
[解决办法]
看了http://stackoverflow.com/questions/176559/you-cant-forward-declare-classes-that-overload-operator

结论还是不要,而不是不能

因为&操作符允许对没有明确定义的类进行操作,前置声明一个类并对其进行&操作时,行为是未定义的
该编译单元并不知道这个类重载了&操作符,可能会当成普通的取地址符进行操作

读书人网 >C++

热点推荐