6

getline()がヘッダー文字列からローカル スコープにあり、使用できるのはなぜですか。

#include <iostream>
#include <string>

int main() {
    std::string str;
    getline(std::cin, str);
    std::cout << str << "\n";
    return 0;
}

それはgccで動作します。しかし、なぜ?これはヘッダーstringで定義されているため、 getline ()の代わりにstd::getline()を使用する必要がありました。

4

1 に答える 1

8

Argument Dependent Lookup (ADL、Koenig Lookup とも呼ばれます) が発生しています。1 つ以上の引数が名前空間で定義された型であるため、他の場所を検索するだけでなくstd、名前空間でも関数を検索します。Stephan T. Lavavej のビデオstdを参照して、それと一般的な名前検索について詳しく学んでください。

于 2013-04-13T18:49:56.433 に答える