的我不能做到這一點:實例類和函數的返回類型混亂
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,或者是因爲編譯器認爲它是一個函數定義的原因?
這被稱爲_most vexing parse_,它在堆棧溢出時已經被很好地覆蓋了。請查看鏈接副本以及右側的「相關」邊欄。 – 2013-02-16 17:40:51