Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > ООП на языке C++


Автор: dimaangel 26.12.2009, 20:04
Добрый народ если вы есть) ответе пожалуйста на вопросы если вас это не затруднит), очень буду благодарен)

Внимательно прочитайте каждый вопрос и все варианты ответов на него. Отметьте любым способом правильный вариант (варианты) ответов. В тесте есть вопросы, которые имеют несколько правильных вариантов ответов.


1.    Корректен ли следующий вызов delete:
              classA *ptrA = new classA[5];
                           …
              delete ptrA;

a.    Да
b.    Нет, т.к. будет удален только один объект
c.    Нет, т.к. объекты удалять вручную нет необходимости
d.    Нет, т.к. будет удален массив, а не объекты

2.    Когда вызываются конструкторы локальных объектов (т. е. тех, которые объявлены в теле некой функции)?

a.    Один раз перед вызовом функции main()
b.    Каждый раз при входе в область видимости объекта
c.    При первом использовании объекта
d.    Нужно вызвать вручную

3.    Элементы класса со статусом доступа public

a.    доступны только внутри данного класса
b.    доступны из любых точек программы
c.    доступны только внутри данного класса и классам, производным от данного


4.    Можно ли в С++ объявлять массив объектов следующим образом: 
                  classA objects[10];

a.    разрешено
b.    запрещено
c.    разрешено, если classA имеет конструктор по умолчанию

5.    Что происходит при вызове оператора new в данном случае:
             classA *ptrA = new classA;   ?

a.    Выделение места в памяти и размещение там экземпляра объекта
b.    Вызов конструктора объекта
c.    Создание статических полей класса
d.    Присвоение указателю адреса созданного объекта

6.    Если известно, что метод никогда не будет вызываться в базовом классе, а будут вызываться только его переопределенные версии в производных классах, то такой метод лучше объявить …

a.    Виртуальным
b.    Чисто виртуальным (абстрактным)
c.    Статическим
d.    Встраиваемым
e.    Обычным


7.    Что обозначает такая запись?
         class A: private B
           {
            }


a.    Все члены класса B будут закрытыми (private) в классе A
b.    Все члены класса B, кроме закрытых (private), будут унаследованы классом A с модификатором доступа private
c.    Класс A унаследует только закрытые (private) члены класса B

8.    Что происходит при вызове оператора delete?

classA *ptrA = new classA;
…
delete ptrA;


a.    Освобождение памяти, занимаемой указателем
b.    Присвоение указателю значения NULL
c.    Освобождение памяти, занимаемой объектом
d.    Вызов деструктора
e.    Удаление статических полей из памяти


9.    Выберите описания, характеризующие абстрактный класс:

a.    класс, экземпляр которого нельзя создать
b.    класс, экземпляр которого есть класс
c.    класс, который содержит хотя бы один абстрактный метод
d.    класс, в котором все методы – виртуальные
e.    класс, не имеющий базового класса
f.    класс, не имеющий наследников

10.    Ниже записаны две реализации перегруженного оператора ++:
int operator++();     // реализация №1
int operator++(int); // реализация №2
Чем они различаются?

a.    ничем
b.    первый оператор – унарный, второй – бинарный
c.    первый оператор – префиксный инкремент, второй – постфиксный
d.    первый оператор – постфиксный инкремент, второй – префиксный
e.    реализация №2 синтаксически неправильна

11.    При передаче объекта как параметра функции по значению происходит:

a.    Копирование всех полей объекта в новый объект-копию и передача копии в функцию
b.    Копирование всех полей объекта в новый объект-копию и передача указателя на копию в функцию
c.    Копирование указателя на объект и передача в функцию копии указателя
d.    Создание синонима объекта и передача его в функцию. Функция с помощью синонима работает с тем же объектом, что и вызывающая функция

12.    Что означает термин «позднее связывание»?

a.    Адрес вызываемого метода вычисляется во время выполнения
b.    Вызываемая функция находится в другом модуле, и ее адрес вычисляется после компиляции
c.    Адрес функции не известен во время ее вызова
d.    Вызывается метод того класса, экземпляром которого является объект

13.    Укажите правильные варианты использования перегруженного оператора приведения к типу int для объекта a класса A:

a.    int x = a;
b.    int x = (int)a;
c.    int x = int(a);
d.    long x = a;
e.    long x = (long)a;
f.    Все варианты правильные

14.    Модификатор protected следует использовать для тех членов класса, которые:

a.    Составляют внешний интерфейс класса
b.    Определяют внутреннюю реализацию данного конкретного класса
c.    Определяют некоторые характерные особенности данной ветви иерархии
d.    Являются статическими членами

15.    Должен ли метод, объявленный как виртуальный в базовом классе, быть объявлен-ным как виртуальный в производных классах?

a.    Не должен
b.    Должен, но разрешается не указывать ключевое слово virtual в классе, который является последним в иерархии наследования
c.    Должен, но только в непосредственном потомке
d.    Всегда должен


16.    Укажите правильный вариант перегрузки оператора ввода из потока для класса A:

a.    friend istream& operator<<(istream& is, A& a);
b.    istream& operator<<(istream& is);
c.    friend istream& operator>>(istream& is, A& a);
d.    istream& operator>>(istream& is);




17.    Можно ли закрытый (private) член базового класса сделать открытым (public) в производном классе?

a.    Нельзя
b.    Можно только для полей
c.    Можно только для методов
d.    Можно только для виртуальных методов
e.    Можно только для полей и виртуальных методов
f.    Можно для любых членов класса

18.    Какое количество параметров может быть у функции, перегружающей оператор []?

a.    Только 1
b.    1 или 2
c.    Не больше 16
d.    Любое количество

19.    В каких случаях будет вызываться конструктор копирования класса classA (a и b – объекты класса classA)?

a.    classA a(b);            // объект b объявлен ранее
b.    classA a = b;           // объект b объявлен ранее
c.    a = b;                     // объекты a и b объявлены ранее
d.    MyFunction(a);      // Прототип: void MyFunction(classA obj);
e.    MyFunction(a);      // Прототип: void MyFunction(classA &ref);
f.    a = MyFunction();     // Прототип: classA MyFunction();
g.    a = MyFunction();     // Прототип: classA & MyFunction();


20.    Выберите правильный вариант объявления конструктора копии для класса classA:

a.    classA(const classA& a);
b.    classA&  classA(const classA& a);
c.    classA  classA(classA  a);
d.    classA();

Автор: world 26.12.2009, 21:28
3 - b
7 - b
8 - d(?)
10 - e
13 - c(?)
14 - c
17 - a
20 - a
По-моему както так.

Автор: Rodman 26.12.2009, 21:49

M
Rodman
Модератор: Название темы должно отражать ее суть!

Автор: Luyan 26.12.2009, 21:51
Цитата(world @  26.12.2009,  21:28 Найти цитируемый пост)
10 - e

world, интересно, как вы тогда перегрузите постфиксную форму?

Добавлено через 42 секунды
правильно: 10 - c

Автор: dimaangel 26.12.2009, 22:17
Мои варианты
1-a
2-c
3-b
4-c
5-a,b,d
6-b
7-b
8-a,c,d
9-a,c
10-c
11-не знаю
12-не  знаю
13- не знаю
14-с
15-a
16-c,d
17-a
18-не знаю
19-a,b
20-a

поправте где не правильно)

Автор: Zhekin 26.12.2009, 23:27
1 - b
2 - c
3 - b
4 - a
5 - a,b,d
6 - b
7 - b
8 - c,d
9 - a,c
11 - a
13 - b,c
15 - b
17 - a
18 - a
19 - a,b,c
20 - a

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)