На главную

Ответы на тест 2. Информатика и программирование
Объектно-ориентированное программирование (C++)

При прохождении теста с этими ответами было набрано 80% баллов
  1. C точки зрения С++ правилен ли приведенный код: const double CD = 2.5; double D; D=CD; CD = 5.0
    код ошибоченнельзя менять значение константы
  2. В приведенном объявлении производного класса class Derived: private First, private Third, public Second
    возможен прямой доступ только к членам класса Second
  3. В языке С++ функция может быть вызвана:
    только после ее объявления и определенияпод сомнением
  4. Выберите верный вариант объявления метода M() класса A другом класса B:
    class B {friend void A::M(); // объявление членов класса}под сомнением
  5. Вычислите fn(7): #include using namespace std; class ww {public: int fn(int v) { if(v==1 || v==0) return 1; if(v%2==0) return (v/2) + 2; else return (v-1) + 3; };};int main() {ww w1; cout << w1.fn(7) << endl; system ("pause"); return 0;}.
    9проверено в VS2010
  6. Деструктор
    не принимает никаких аргументов и не может быть перегруженинфа 100%
  7. Должен ли метод, объявленный как виртуальный в базовом классе, быть объявленным как виртуальный в производных классах?
    Не долженпод сомнением
  8. Должна ли функция, реализующая перегруженный оператор для некоторого класса, быть дружественной этому классу?
    Должна в том случае, если для реализации оператора необходимо иметь доступ к защищенным членам классапод сомнением
  9. Если какое-либо имя члена класса в производном классе совпадает с именем члена в одном или нескольких базовых классах, то
    выбирается член производного классапод сомнением
  10. Если при описании класса конструктор не был задан, то
    компилятор сгенерирует для класса стандартный конструктор
  11. Если функция уже однажды была объявлена виртуальной, то
    она остается таковой на любом более низком уровне иерархии
  12. Какое обращение к функции в приведенном фрагменте программы будет правильным? #include using namespace std; template T mах(T а, T b) { if (a > b) return(a); else return(b); } int main() { setlocale(LC_ALL,"Russian"); cout << "Максимум 100 и 200 равен " << max(100, 200) << endl; cout << "Максимум 5.4321 и 1.2345 равен " << max(5.4321, 1.2345) << endl; system("pause"); return 0; }
    max(100, 200) и max(5.4321, 1.2345)
  13. Конструкторы
    не наследуются, поэтому производный класс должен иметь собственные конструкторыинфа 100%
  14. Механизм наследования классов позволяет
    строить иерархии, в которых производные классы получают элементы родительских или базовых классов и могут дополнять их или изменять их свойстваинфа 100%
  15. Модификатор private: имя секции следует использовать если:
    Данные и методы, помещенные в эту секцию, будут доступны методам этого класса. Доступ к ним методам производных классов запрещен
  16. Модификатор protected: имя секции следует использовать если:
    Данные и методы, помещенные в эту секцию, будут доступны методам этого класса и производным от него, т.е. его потомкаминфа 100%
  17. Модификатор public: имя секции следует использовать если:
    Данные и методы, помещенные в эту секцию, будут доступны методам всех классовинфа 100%
  18. Может ли абстрактный метод не быть виртуальным?
    Не может, любой абстрактный метод автоматически является виртуальнымнаугад
  19. Можно ли определять классы, для которых не будут создаваться никакие объекты.
    да, такие классы называются абстрактными
  20. Полиморфизм – это
    возможность для объектов разных классов, связанных с помощью наследования, реагировать различным образом при обращении к одной и той же функции-члену
  21. Попытка создать объект абстрактного класса:
    даст синтаксическую ошибку
  22. Производный класс
    не может иметь доступ к закрытым элементам своего базового классапод сомнением
  23. С точки зрения С++ правилен ли приведенный фрагмент кода: # include using namespace std; class A {protected: int x;int y; public: int a; int y; int f1(int x, int y) {return (x-y);} };
    компиляция вызовет ошибкупроверено в VS2010: ошибка int A::y: переопределение
  24. С точки зрения С++ правилен ли приведенный фрагмент кода: #include #include using namespace std; template class array { public: array(int size_); T1 sum_(void); average_value(void); void show_array(void); int add_value(T); private: T *data; int size; int index; }
    код содержит синтаксическую ошибкупод сомнением
  25. Сокрытие информации (инкапсуляция) – это
    маскирование деталей реализации функции, класса или программыпод сомнением
  26. Функция для перегрузки оператора имеет вид:
    Тип operator операция (список параметров) {тело функции}
  27. Чему равна переменная х? int p = 5; int x = ++p++ + 1
    7проверено в VS2010
  28. Чему равна переменная х? int p = 5; int x; x = ++p + 1
    7проверено в VS2010
  29. Чему равна переменная х? int p = 5; int x; x = p++ + 1
    6проверено в VS2010
  30. Чисто виртуальные методы класса предоставляют потомкам класса:
    Базовую функциональностьнаугад
  31. Чистой виртуальной функцией является такая функция, у которой
    в ее объявлении тело определено как 0 (инициализатор равен 0)
  32. Шаблон класса имеет вид:
    template <список параметров> class объявление класса
  33. Являются ли следующие записи корректными и идентичными? class cA { int value; void method();} и struct sA {int value; void method();}
    Корректны и идентичнынаугад