Использование класса

Задания раздела 2.6.2
2.41. Используйте класс Sales_data для перезаписи кода упражнений из разделов 1.5.1, 1.5.2 и 1.6. А так же определите свой класс Sales_data в том же файле, что и функция main ().
Читать далее «Использование класса»

Собственные структуры данных

Задания раздела 2.6.1
2.39. Откомпилируйте следующую программу и посмотрите, что будет, если не поставить точку с запятой после определения класса. Запомните полученное сообщение, чтобы узнать его в будущем.
struct Foo { } 
int main (
return(0);
}
2.40. Напишите свою собственную версию класса Sales_data
Читать далее «Собственные структуры данных»

Спецификатор типа decltype

Задания раздела 2.5.3
2.36. Определите в следующем коде тип каждой переменной и значения, которое будет иметь каждая из них по завершении.
int a=3, b=4;
decltype(a) c=a;
deltype((b)) d=a;
++c;
++d;
2.37. Присвоение - это пример выражения, которое возвращает ссылочный тип. Тип - это ссылка на тип левого операнда. Таким образом, если переменная i имеет тип int, то выражение i=x имеет тип int&. С учетом этого определите тип и значение каждой переменной в следующем коде:
int a=3, b=4;
decltype(a) c=a;
decltype(a=b) d=a;
2.38. Опишите различия выведения типа спецификаторами decltype и auto. Приведите пример выражения, где спецификаторы auto и decltype выведут тот же тип, и пример, где они выведут разные типы.
Читать далее «Спецификатор типа decltype»

Работа с типами

Задания раздела 2.5.2
2.33. С учетом определения переменных из этого раздела укажите то, что происходит в каждом из этих присвоений.
a=42; b=42; c=42;
d=42; e=42; g=42;
2.34. Напишите программу, содержащую переменные и присвоения из предыдущего упражнения. Выведите значения переменных до и после присвоений, чтобы проверить правильность предположений в предыдущем упражнении. Если они неправильны, изучите примеры еще раз и выясните, что привело к неправильному заключению.
2.35. Укажите типы, выведенные в каждом из следующих определений. Затем напишите программу, чтобы убедиться в своей правоте.
const int i=42;
auto j=i; const auto &k=i; auto *p=&i;
const auto j2=i, &k2=i;
Хоть первые два задания бессмысленны, есть немного теории!
Читать далее «Работа с типами»

Момент истины. Переезд на vps удался?

Неужели получилось?
Главным затыком, съевшим очень много времени и сподвигнувшим меня на много экспериментов со звериным лицом? было отсутствие в apache rewrite mod. пара команд
a2enmod rewrite
service apache2 restart
и создание .htaccess
Читать далее «Момент истины. Переезд на vps удался?»

Переменные constexpr и константные выражения

Задания раздела 2.4.4 
2.32. Допустим ли следующий код? Если нет, то как его исправить?
int null=0, *p=null;

Константное выражение - это выражение, которое вычисляется во время компиляции и не может измениться.
Литерал - это константное выражение.
Константый объект, инициализируемый константным выражением (литералом например) является константным выражением.
const int i=1024; // константное выражение
const int p=i+1; // константное выражение
Неконстантый объект не может быть константным выражением. Например:
int i=1024; // хоть 1024 и литерал, но i - не константа
Читать далее «Переменные constexpr и константные выражения»

Спецификатор const верхнего и нижнего уровней

Задания раздела 2.4.3
2.30. Укажите по каждому из следующих объявлений, имеет ли объявляемый объект спецификатор const нижнего или верхнего уровня.
const int v2=0;
int v1=v2;
int* p1=&v1, &r1=v1;
const int *p2=&v2, *const p3=&i, &r2=v2;
2.31. С учетом объявлений в предыдущем упражнении укажите, допустимы ли следующие присвоения. Объясните, как спецификатор const верхнего или нижнего уровня применяется в каждом случае.
r1=v2;
p1=p2;
p1=p3;
p2=p1;
p2=p3;
Читать далее «Спецификатор const верхнего и нижнего уровней»

Константные ссылки и указатели

Задания раздела 2.4.2
2.27. Какие из следующих инициализаций допустимы? Объясните почему.
(a) int i=-1, &r=0;
(b) int* const p2=&i2;
(c) const int i=-1, &r=0;
(d) const int* const p3=&i2;
(e) const int *p1=&i2;
(f) const int &const r2;
(g) const int i2=i, &r2;
2.28. Объясните следующие определения. Какие из них недопустимы?
(a) int i, *const cp;
(b) int *p1, *const p2;
(c) const int ic, &r=ic;
(d) const int *const p3;
(e) const int *p;
2.29.
С учетом переменных из предыдущих упражнений, какие из следующих присвоений допустимы? Объясните почему:
(a) i=ic;
(b) p1=p3;
(c) p1=⁣
(d) p3=⁣
(e) p2=p1;
(f) ic=*p3;

Читать далее «Константные ссылки и указатели»

Спецификатор const

Задания раздела 2.4
2.26. Что из приведенного ниже допустимо? Если что-то недопустимо, то почему?
(a) const int buf;
(b) int cnt=0;
(c) const int sz=cnt;
(d) ++cnt; ++sz;
Читать далее «Спецификатор const»