7
在下面的例子:返回構件類在C++
class A
{
public:
class B
{
...
}
B Method(B argument);
}
A::B A::Method(B argument);
到底爲什麼需要返回類型的範圍,而不是爲參數類型?
在下面的例子:返回構件類在C++
class A
{
public:
class B
{
...
}
B Method(B argument);
}
A::B A::Method(B argument);
到底爲什麼需要返回類型的範圍,而不是爲參數類型?
根據[basic.lookup.qual]/3,
在聲明,其中說明符-ID是合格-ID,所述合格-ID之前使用的名稱被聲明爲 在定義的命名空間範圍內被查找;在成員的類或名稱空間的範圍 中查找限定標識後面的名稱。
返回類型來之前的合格-ID被聲明(即A::Method
),而參數類型來後,這樣的參數類型的名稱會自動的A
範圍內擡頭,而返回類型的名稱不是。我們可以避免使用尾隨返回類型的額外限定條件。
auto A::Method(B argument) -> B;
我是唯一一個爲了得到它而不得不慢慢閱讀標準報價10次的人? – user
@user我知道如果你不熟悉詞彙,閱讀起來並不那麼容易。這就是爲什麼我也在下面解釋。 – Brian
是的,你肯定爲我節省了額外的20次閱讀 – user