std::string empty; //
Sales_item item; //
//
Однако некоторые классы требуют, чтобы каждый объект был инициализирован явно. При попытке создать объект такого класса без инициализатора компилятор пожалуется на это.
Упражнение 2.9. Объясните следующие определения. Если среди них есть некорректные, объясните, что не так и как это исправить.
(а) std::cin >> int input_value; (b) int i = { 3.14 };
(с) double salary = wage = 9999.99; (d) int i = 3.14;
Упражнение 2.10. Каковы исходные значения, если таковые вообще имеются, каждой из следующих переменных?
std::string global str;
int global_int;
int main() {
int local_int;
std::string local_str;
}
Для обеспечения возможности разделить программу на несколько логических частей язык С++ предоставляет технологию, известную как
При разделении программы на несколько файлов необходим способ совместного использования кода этих файлов. Например, код, определенный в одном файле, возможно, должен использовать переменную, определенную в другом файле. В качестве конкретного примера рассмотрим объекты std::cout
и std::cin
. Классы этих объектов определены где-то в стандартной библиотеке, но все же наши программы могут использовать их.
Значение неинициализированной переменной неопределенно. Попытка использования значения неинициализированной переменной является ошибкой, которую зачастую трудно обнаружить. Кроме того, компилятор не обязан обнаруживать такие ошибки, хотя большинство из них предупреждает, по крайней мере, о некоторых случаях использования неинициализированных переменных.
Что же произойдет при использовании неинициализированной переменной с неопределенным значением? Иногда (если повезет) программа отказывает сразу, при попытке доступа к объекту. Обнаружив место, где происходит отказ, как правило, довольно просто выяснить, что его причиной является неправильно инициализированная переменная. Но иногда программа срабатывает, хотя результат получается ошибочным. Возможен даже худший вариант, когда на одной машине результаты получаются правильными, а на другой происходит сбой. Кроме того, добавление кода во вполне работоспособную программу в неподходящем месте тоже может привести к внезапному возникновению проблем.
Для поддержки раздельной компиляции язык С++ различает объявления и определения.