为什么重载operator&的类不能被前置声明

来源:互联网  时间:2016/9/1 20:19:22

关于网友提出的“ 为什么重载operator&的类不能被前置声明”问题疑问,本网通过在网上对“ 为什么重载operator&的类不能被前置声明”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 为什么重载operator&的类不能被前置声明
描述:

google编程风格指南重载operator&

今天看了一下google c++的编程风格指南,其中关于重载运算符的时候,说到这么一句:重载operator&的类不能被前置声明,然后我试验的一下,编译正常,运行正常,不太明白为什么说不能前置声明,求各路大神指教一下。
ps:重载operator&的函数就是直接返回了this指针的
CTest* operator&()
{
    return this;
}
解决方案1:

坐等答案,留个标记

解决方案2:

看了http://stackoverflow.com/questions/176559/you-cant-forward-declare-classes-that-overload-operator
结论还是不要,而不是不能
因为&操作符允许对没有明确定义的类进行操作,前置声明一个类并对其进行&操作时,行为是未定义的
该编译单元并不知道这个类重载了&操作符,可能会当成普通的取地址符进行操作

解决方案3:

是不能还是不要?

上一篇psapih的问题
下一篇vc中sql语句的select问题
明星图片
相关文章
《 为什么重载operator&的类不能被前置声明》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)