![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Void test()
{ D1 d(6); // Ой: d.x не инициализирован D1 e; // Ошибка: D1 не содержит конструктор по умолчанию
Вы можете защитить свои ноги путем использования инициализаторов членов (member-initializer): struct D1: B1 { using B1:: B1; // Неявно объявляет D1(int) int x{0}; // поле x проинициализировано }; Void test() { D1 d(6); // d.x равно 0 }
См. также:
Статические утверждения (утверждения времени компиляции) – static_assert Статические утверждения (утверждения времени компиляции) содержат константное выражение и строковый литерал: Static_assert(expression, string);
Компилятор вычисляет выражение, и если результат вычисления равен false (т.е. утверждение нарушено), выводит строку в качестве сообщения об ошибке. Например: static_assert(sizeof(long)> =8, " 64-bit code generation required for this library."); struct S { X m1; Y m2; }; static_assert(sizeof(S)==sizeof(X)+sizeof(Y), " unexpected padding in S");
static_assert полезен для явных заданий некоторых утверждений о программе и ее поведении. Обратите внимание, что поскольку выражение static_assert вычисляется во время компиляции, то оно не может применяться для проверки утверждений, зависящих от значений времени выполнения. Например: int f(int* p, int n) { // Ошибка: выражение в static_assert() не является // константным выражением static_assert(p==0, " p is not null"); //... }
(вместо этого следует проверить выражение и сгенерировать исключение в случае неудачи). См. также:
Long long -- более длинное целое Целочисленная переменная, размером, по крайней мере, 64 бита. Например: long long x = 9223372036854775807LL;
Нет, никаких long long long, и long нельзя рассматривать как short long long. См. также:
Nullptr -- литерал для задания нулевого указателя nullptr – это литер, который задает нулевой указатель; это не целочисленное значение: char* p = nullptr; int* q = nullptr; char* p2 = 0; // 0 все еще работает и p==p2 Void f(int); void f(char*); f(0); // вызов f(int) f(nullptr); // вызов f(char*)
|