读书人

【请问】一个和类同名的普通函数引发

发布时间: 2012-04-20 15:27:03 作者: rapoo

【请教】一个和类同名的普通函数,引发的疑问(内有很简单的代码)
如下代码编译通过,但注释行的注释符去掉,则编译错误了。哪位大侠可以帮忙解释一下?

C/C++ code
#include <iostream>class A{};A A(A  aa){  return aa;}int main(){    //A ee;    return 0;}

编译环境 Code:Blocks+mingw,应该不会和IDE以及编译器有关吧

[解决办法]
显然,编译器不知道你这里的ee究竟应该是什么
[解决办法]
问题出在你的构造函数的定义上了
A A(A aa)
{
return aa;
}


你这构造函数又是返回值,参数又是A aa的违反了标准了。
[解决办法]
自己去看标准的12.1那章节吧
[解决办法]
A A(A aa)只是定义了一个全局函数A 参数A 返回A
直接写A aa编译器会优先绑定函数A 所以报语法错误
改成下面的可以编译通过
C/C++ code
int main(){    class A ee;    return 0;}
[解决办法]
C++里没人这样写函数,也没这样的需求。

读书人网 >C++

热点推荐