2008 Вариант 4 (1119592)
Текст из файла
Вариант 4 _2008 Ф.И.О.___________________________________№ группы________
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
1. Есть ли ошибки в приведенном фрагменте программы на С++? Если есть, то объясните, в чем они заключаются. Вычеркните ошибочные конструкции (если они есть). Что будет выдано в стандартный канал вывода при вызове функции main()?
void f1 ( ) { cout << 0; }
class X {
int i;
double t;
X ( int k = 0) { i = k; t = k / 10; cout << 1; }
public:
X (double r ) { i = 0; t = r; cout << 2; }
void operator = (X & a) {i = a.i; t = a.t; cout << 3; }
X (int k, double r) { i = k; t = r; cout << 4;}
void f1 (int a) {i = a; t = a / 2.0;}
};
int main () {
X a (1);
X b (2.5);
X c;
X d (1.5, 5);
f1 ( 1 );
b = d;
return 0;
}
2. Что будет выдано в стандартный канал вывода при вызове функции f ()? Объясните ответ.
class X {
int i;
public:
X (int j) { try { if (j < 0) throw “negative”;
if (j > 100) throw j;
i = j;
}
catch (double t) { cout << ”catch1” << endl; }
catch (const char * s) { cout << ”catch2\n” << s << endl; }
catch (…) { cout << ”catch3\n”; throw; }
}
};
void P (int k) {try { X a (10 - k);
X b (k + 90);
X c (k);
}
catch (int t){ cout << ”catch4\n” << t << endl; throw; }
catch (…){ cout << ”catch5\n”; throw; }
}
void f ( ) { try { P(15);
P(0);
cout << “end_of_f\n”; }
catch (int i){ cout << ”catch-f\n”; }
catch (…){ cout << ”all exceptions\n”; }
cout << ”finish\n”;
}
3. Укажите порядок вызова конструкторов и деструкторов при создании объекта некоторого класса, имеющего два базовых класса и два подобъекта (без какой-либо инициализации). Приведите пример такой ситуации.
4. Есть ли ошибки в приведенном фрагменте программы на С++? Если есть, то объясните, в чем они заключаются. Ошибочные конструкции вычеркнуть из текста программы. Что будет выдано в стандартный канал вывода при вызове функции gg ()?
class X { public: virtual void f ( int i) {cout << "f_X-int" << endl;}
virtual void f ( ) {cout << "f_X-void" << endl;}
virtual void g(double x) {cout << "g_X-double" << endl; }
virtual void h (int i) {cout << "h_X-int" << endl;}
};
class Y: public X { public: void f (int j) {cout << "f_Y-int" << endl;}
void g(double y) {cout << "g_Y-double" << endl;}
virtual void h ( int i, double t = 1.0) {cout << "h_Y-int/double" << endl;}
};
void gg ( ) { X a; Y b; X * p = & b;
p -> f (1); p -> f ( ); p-> g (1.5); p -> h (10); p -> h (10, 0.1);
}
5. Для класса vect опишите перегруженную операцию индексации так, чтобы были верными все действия функции g (). Возможно ли это? Если нет – объясните почему; если можно – опишите и объясните, за счет чего удалось добиться требуемого.
class vect {
int *p;
int size;
public: vect (int n) { p = new int [size = n];
for (int i = 0; i < size; i++) p[i] = i; }
};
void g () {
vect x (5);
int k;
k = x [2];
x [1] = x [2 ]+ 5;
}
6. Привести три различные ситуации, когда вызывается конструктор копирования класса. Приведите краткие примеры каждой из этих ситуаций.
7. Привести пример использования динамической идентификации типа в С++.
-
Объясните, где ошибка в описании класса А? Приведите 2 варианта возможных исправлений приведенной программы, чтобы она стала верной (не вводя дополнительных членов класса)?
class A { int a;
public:
static void f (int x) {a = x; }
};
int main () {
A::f (1);
return 0;
}
9. Какие из следующих утверждений являются верными, а какие – ошибочными? Если утверждение ошибочно, сформулируйте правильное.
-
шаблон класса может иметь только типовые параметры
-
конструктор умолчания автоматически генерируется только в том случае, если в классе нет ни одного явно описанного конструктора
-
при перегрузке операции инкремента возможна перегрузка только постфиксной его формы
-
абстрактный класс должен содержать только чистые виртуальные функции
-
в catch-обработчике может быть возбуждено исключение другого типа
10. Перечислить 5 видов итераторов библиотеки STL. Какие виды итераторов допускают обратные итераторы? Какие виды операций сравнения итераторов допустимы для двунаправленных итераторов?
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.