Ответы 2008 вариант 2 (Коллоквиум. Варианты заданий и ответы)
Описание файла
Файл "Ответы 2008 вариант 2" внутри архива находится в папке "Коллоквиум. Варианты заданий и ответы". Документ из архива "Коллоквиум. Варианты заданий и ответы", который расположен в категории "". Всё это находится в предмете "практикум (прикладное программное обеспечение и системы программирования)" из 4 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Онлайн просмотр документа "Ответы 2008 вариант 2"
Текст из документа "Ответы 2008 вариант 2"
Ответы и баллы :::: вариант 2_2008
Максимальная оценка всех задач – 10 баллов (всего 100 баллов)
1. void D::h() {
f(1.2); // D::f
f(); // ошибка эта f не видна
a = 2; // B::a = 2
}
int main () {
D d;
f(); //ошибка
f(6); //::f
return 0;
}
Критерии: За каждую не найденную ошибку - 2
За каждую лишнюю ошибку или неверно написанное с «::» имя
(это строго взаимоисключающие ошибки) - 2
2.
int main( ){
T t; S s; T *p = &s;
p -> f (1.5); // печатается T::f
p -> g (); // печатается T::f
T::g
p -> h(); //печатается S::f
S::g
S::h
}
Критерии: За каждую лишнюю ошибку или неправильно вызванную функцию – 2
(может быть больше 10 баллов, но причины ошибок пересекаются )
3.
Нет, т.к. содержит открытые поля-данные.
Метод класса В:
В operator -- ( int t) {
B b = *this;
a = a - 1;
return b;
}
Критерии: АТД -3
Есть ссылка в возвращаемом результате -1
Неверно реализована операция - 7
4.
- конструктор умолчания B,
- конструктор умолчания D,
- конструктор умолчания B,
- конструктор копирования D,
- деструктор D,
- деструктор B,
- деструктор D,
- деструктор B.
Критерии: За каждую ошибку (пропущенную, лишнюю или неверную печать) - 2
5. void f (const char * a = 0 );
void f (int a, int b = 0);
Возможны варианты с char...
Критерии: За каждую ошибку – 5
Функций не две -10
6. Класс, в котором есть хотя бы одна чистая виртуальная функция, называется абстрактным классом. Нельзя создавать объекты абстрактного класса, но можно описывать указатели на абстрактный класс, использовать абстрактный класс в качестве базового класса, вводить неконстантные члены-данные, описывать конструкторы.
<Пример абстрактного класса>
Критерии: ошибки в примере (существенные) -4
только пример -5, только определение – 5
за каждый неверный ответ на последний вопрос - 2.
-
1
1
5
3
7
6
8
Критерии: За каждую неверную (лишнюю или пропущенную) печать -2
8. Исправления: class X {
public:
static void g () {cout << "g\n";}
int f (int n) const {cout << "f\n"; return n;}
};
Критерии: Ответ нет - -10, не добавили static -5, не добавили const -5.
9. Оператор dynamic_cast реализует приведение полиморфных типов (указателей или ссылок) в динамическом режиме. При неудачной попытке приведения типов результатом выполнения dynamic_cast является 0, если в операторе использовались указатели. Если же использовались ссылки, генерируется исключительная ситуация bad_cast. Пример:
Base *bp, b_ob;
Derived *dp, d_ob;
bp = &d_ob;
dp = dynamic_cast <Derived *> (bp);
Критерии: Совсем неверное описание оператора -8, нет полиморфного типа -4
неверный пример -5.
10. void f (vector <char> &v) {
vector < char > :: iterator p = v.begin ();
while ( p != v.end()) {
p++;
if (p != v.end()) {v.erase(p);}
}
vector < char > :: reverse_iterator rp = v.rbegin ();
while ( rp != v.rend ()) {
cout << *rp << ' ';
rp++;
}
cout << endl;
}
Критерии: За каждую существенную ошибку -3.