【发布时间】:2013-02-16 17:24:20
【问题描述】:
我不能这样做:
class A
{
public:
A()
{
}
};
A a1();
因为A a1(); 看起来像一个函数原型。
但我可以这样做:
class B
{
public:
B(std::string argument)
{
std::cout << argument;
}
};
B b1("Text");
这两件事本质上是相同的,只是编译器能够将B b1("Text"); 区分为不是函数原型,因为括号中传递了一些数据。
是否有任何理由必须为A省略括号,或者是因为编译器认为它是一个函数定义的原因?
【问题讨论】:
-
这被称为最令人头疼的解析,它已经在 Stack Overflow 上得到很好的介绍。请查看链接的副本以及右侧的“相关”侧边栏。
标签: c++ class function-prototypes