6

为什么getline()来自本地范围内的标头字符串并且可以使用:

#include <iostream>
#include <string>

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

这适用于 gcc。但为什么?它在 header string中定义,这应该要求我使用std::getline()而不是getline()

4

1 回答 1

8

您正在体验 Argument Dependent Lookup (ADL,也称为 Koenig Lookup)。由于一个或多个参数是在std命名空间中定义的类型,因此它会搜索命名空间中的函数以及std它要搜索的任何其他位置。我向您指出Stephan T. Lavavej 的视频,以了解有关它和一般名称查找的更多信息。

于 2013-04-13T18:49:56.433 回答