事因

#include <iostream>
using namespace std;
struct A
{
A(int) {}
A() {}
void fun() {};
};

int main()
{
A a(2);
a.fun();
A b();
b.fun();
}

编译错误

区分int a() 和 int  a_#include

解释

A b(); 是函数声明,返回值为A, 函数名为b

不信你看

#include <iostream>
using namespace std;

int main()
{
int test();
cout << test << endl;
cout << test() << endl;
}

int test()
{
return 1000;
}

结果

区分int a() 和 int  a_函数声明_02

 

鄙视下自己

今天才知道函数里边还可以声明函数(不可以定义)的。不信你看

#include <iostream>
using namespace std;

int main()
{
int test();
cout << test << endl;
cout << test() << endl;
}

int test()
{
void test1();
test1();
return 1000;
}
void test1()
{
cout << "I'm here" << endl;
}

结果

区分int a() 和 int  a_ios_03