В учебниках по C++ написано, что для того, чтобы использовать строковой тип, необходимо подключить соответсвующий заголовок. Но на приктике, если подключить только iostream, код, использующий строки, компилируется и работает без проблем.
Например, данный код будет успешно работать:
#include <iostream>
// работает без подключения заголовка
// #include <string>
using namespace std;
int main() {
string s = "hello";
cout << s << endl;
return 0;
}
Это можно заметить и при работе с фукнкциями из некоторых других заголовков.
Итак, как понять, когда нужно, а когда не нужно указывать заголовок при использовании той или иной функции?
UPD: Будет ли работать код без определенного заголовка на другом компиляторе на другой машине?