(←) предыдущая запись ; следующая запись (→)
Мне, когда я рассказываю про что-то айтишное, нравится взять какой-нибудь один пример, и рассматривать его со всех сторон.
Вот на днях взяли hello world на C++:```cpp
include
int main(int argc, char **argv) {
std::cout << “Hello world” << std::endl;
// либо ‘\n’
return 0;
}
На этом крошечном примере с подготовленной группой можно обсудить:
(1) что такое потоки ввода-вывода?
(2) что такое неймспейсы
(3) какие типы операндов и возвращаемого значения у оператора `<<`, стыкуемость операций
(4) что такое ссылки
(5) являются ли `cout` и `<<` функцией, что такое оператор и что такое переопределение оператора
(6) что содержит сигнатура функции
(7) откуда начинает работу программа, и кто её запускает
(8) как ОС передаёт аргументы в программу
(9) что такое коды возврата
(10) как в C++ записываются строки и массивы, и что такое указатели
(11) как создаётся массив строк, и как он выглядит в памяти
(12) знает ли массив свой размер? а откуда строка знает свой?
(13) имеет ли значение, используются ли одинарные кавычки или двойные.
(14) что такое эскейп-последовательности
(15) что такое директивы препроцессора и вообще препроцессинг, как проект сшивается из нескольких файлов
(16) как происходит компиляция, и что будет, если есть несколько функций с одним именем main
(17) (upd из комментов) про буферизацию вывода
И для каждого из этих пунктов приведённый микро-пример будет содержательным.