关于网友提出的“ 为什么重载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
结论还是不要,而不是不能
因为&操作符允许对没有明确定义的类进行操作,前置声明一个类并对其进行&操作时,行为是未定义的
该编译单元并不知道这个类重载了&操作符,可能会当成普通的取地址符进行操作
是不能还是不要?