Язык программирования C++ для профессионалов



Какое отношение между классами реализовано в данном случае?

class A { public: A() { a = 0; }; virtual int f() { return a; } int a; }; class B: public A { public: B() { a = 1; }; virtual int f() { return a; } };

  • использование
  • принадлежность
  • (Правильный ответ) наследование

Какой результат будет у следующего выражения?

#include <iostream.h> #include <fstream.h> int main( { int i = 1, j = 25; double a = 25e6; char s[40]; strcpy(s, «»Test»»); ofstream outfile(«»c:\\test.txt»»); if (!outfile) { cout << «»Ошибка создания файла»»; return 1; } outfile << i << ‘ ‘ << j << ‘ ‘ << a << ‘ ‘ << s << endl; outfile.close(); }

  • будет выведено сообщение «Ошибка создания файла«
  • (Правильный ответ) будет создан текстовый файл «C:\test.txt» с содержимым «1 25 2.5e+07 Test«
  • будет создан двоичный файл
  • будет создан текстовый файл «C:\Test» с содержимым «1 25 2.5e+07 Test«
  • в ходе выполнения возникнет исключение

В каком порядке вызываются конструкторы и деструкторы?

 

  • Конструктор базового класса
  • Деструктор базового класса
  • Конструктор производного класса
  • Деструктор производного класса

 

  • 1, 3, 2, 4
  • 3, 1, 2, 4
  • (Правильный ответ) 1, 3, 4, 2
  • 3, 1, 4, 2
  • 1, 2, 3, 4

Какая строка данного кода производит возврат элемента по указателю?

#define SIZE 100int Stack[SIZE]; int SP; void lnit(){ SP = — 1 ; } void Push(int val) { Stack[ ++SP]=val; }int Рор() { if (SP < О ) return(O); return ( Stack[SP—]); }

  • четвертая
  • пятая
  • (Правильный ответ) девятая
  • вторая

Что определяет операция sizeof(str);?

  • число символов в заданной строке
  • (Правильный ответ) сколько байтов занимает переменная
  • операции, допустимые с данной переменной

Что понимается под сопровождением программного обеспечения?

  • внесение изменений
  • (Правильный ответ) устранение ошибок
  • установка и настройка

Объявлен класс:

class Point { int x,y,z; char *s; public: Point(int,int,int, char*); int GetX() { return x;} int GetY() { return y;} int GetZ() { return z;} Point* operator->() { return this;} }; Point::Point(int x1,int y1,int z1, char * s1) { x=x1; y=y1; z=z1; int n=strlen(s1); s=new char[n+1]; for(int i=0;i<=n;i++) s[i]=s1[i];}

Какие из следующих операторов приведут к ошибкам компиляции?

  • (Правильный ответ) cout<<Pt->x<<‘\t'<<Pt->y<<‘\t'<<Pt->z<<endl;
  • (Правильный ответ) cout<<Pt->s<<endl;
  • Point Pt(1,2,3,»MyPt»);
  • cout<<Pt->GetX()<<‘\t'<<Pt->GetY()<<‘\t'<<Pt->GetZ()<<endl;

Как называется выделение существенных характеристик объекта, отличающих его от других видов объектов?

  • (Правильный ответ) абстракция
  • полиморфизм
  • инкапсуляция

Что понимается под компонентом?

  • переменная или константа
  • отдельный класс или структура
  • (Правильный ответ) множество связанных между собой классов
  • функция или процедура

Отметьте правильное создание объекта вложенного класса cls2, если имеется следующее объявление:

class cls1 { public : int yy; class cls2 { public : int zz; }; };

  • cls2 c2;
  • (Правильный ответ) cls1::cls2 c2;
  • cls2::cls1 c2;

Что понимается под эволюцией программного обеспечения?

  • устранение ошибок
  • (Правильный ответ) внесение изменений

Чем механизм шаблонов отличается от механизма перегрузки

  • (Правильный ответ) перегрузка не требует единообразия алгоритмов перегружаемых функций
  • ничем не отличается, это просто разные наименования одного и того же
  • шаблон создается для функций, различающихся типами данных

Выберите правильный вариант обращения к элементам и использования класса A:

class A{ int x;};

  • A *\a* = [120];
  • (Правильный ответ) A a[100];
  • A /a*/ = [11];
  • A int [20];

Выберите правильные объявления дружественного класса:

  • (Правильный ответ) class B{ … }; class A { friend class B; }; class C { friend class A; };
  • (Правильный ответ) class B{ … }; class A { friend class B; };
  • class B{ … }; class A { friend class A::B; };

В чем состоит преимущество строго типизированных интерфейсов?

  • (Правильный ответ) обеспечение взаимодействия программных частей системы, созданных разными людьми
  • (Правильный ответ) только совместимые части программы могут быть скомпилированы и скомпонованы воедино
  • (Правильный ответ) минимум проверок на этапе выполнения

Когда предпочтительно использовать представления объекта класса Х описанием Х* или Х&?

  • если известно, что значение указателя не будет изменяться
  • (Правильный ответ) если приходится перестраивать указатель на объект–элемент в течение жизни объекта-владельца
  • (Правильный ответ) если нужно передавать объекты в качестве параметров

Какие операторы можно использовать для выделения и освобождения динамической памяти?

  • malloc, delete
  • (Правильный ответ) new, delete
  • new, free
  • malloc, free

Задан массив:

int m[3][4] = { { 1, 2, 3, 4}, { 5, 6, 7, 8}, { 9, 10, 11, 12} };

Какое значение содержится в элементе m[2][3]?

  • 10
  • 3
  • 7
  • (Правильный ответ) 12

Оператором итерационного цикла является оператор:

  • do тело_цикла while (выражение-условие)
  • while (выражение-условие) тело_цикла
  • (Правильный ответ) for (инициализация цикла; выражение-условие; список_выражений) тело_цикла

Какая функция будет первой вызвана, если функция запустила особую ситуацию, не указанную в ее описании

  • abort()
  • terminate()
  • (Правильный ответ) unexpected()

Как называются операторы, изменяющие состояние объекта?

  • (Правильный ответ) модификаторы
  • селекторы
  • операции преобразований

В каком случае подкласс абстрактного класса сам не является абстрактным?

  • (Правильный ответ) когда в нем переопределены все чисто виртуальные функции
  • когда в нем переопределена хотя бы одна чисто виртуальная функция
  • подкласс абстрактного класса никогда не может быть абстрактным

Если имеется код char a[8]; cin >> a; и вводится текст «Hello world», то что будет в массиве a?

  • (Правильный ответ) Hello
  • Hello w
  • Hello world
  • wo

Что будет напечатано в результате выполнения фрагмента программы?

char s[] = «»abcd yuio»»; char *str = s; cout << str;

  • ошибка выполнения
  • abcd
  • (Правильный ответ) abcd yuio
  • синтаксическая ошибка

Какой результат будет у следующего выражения?

#include <iostream.h>short x = 11, i = 6;void fun1(){ if (i == (x-4)) throw 2; }void fun2(){ —x; fun1(); x++; }int main(){ try { fun2(); } catch (int) { cout << «»Exception «»; } cout << x << «» «» << i; }

  • (Правильный ответ) Exception 10 6
  • Exception
  • 10 6
  • Exception 9 6

Что дает использование обработки особых ситуации?

  • (Правильный ответ) возможность корректного завершения программы или участка программы в случае возникновения особой ситуации
  • (Правильный ответ) возможность выдать сообщение пользователю в случае возникновения особой ситуации
  • (Правильный ответ) возможность разработчику контролировать непредвиденные ситуации

Укажите результат выполнения следующего кода:

int factorial(int x){ if(x==1) return 1; else return x*factorial(x-1);}int Func(int y){ y = factorial(3); return y+10;}int _tmain(int argc, _TCHAR* argv[]){ int x = 0; int z = 0; z = Func(x); printf(«»z=[%d] x=[%d]»»,z,x); int i; scanf(«»%d»»,&i); return 0;}

  • ошибка компиляции в строке «return x*factorial(x-1);» функции «int factorial(int x)»: вызов функции самой себя
  • z=[16] x=[6]
  • (Правильный ответ) z=[16] x=[0]
  • ошибка компиляции в строке «y = factorial(3);» функции «int Func(int y)» : попытка присвоить значение входному параметру

Верно ли такое объявление класса Name?

class Name{ public: int Age; char* name;};

  • нет, существует несоответствие в типах
  • (Правильный ответ) да, верно
  • нет, такое объявление вызовет ошибку компиляции в пятой строке
  • нет, неправильно заданы указатели

Что значит операция:<<?

  • (Правильный ответ) операция вывода
  • (Правильный ответ) сдвиг влево
  • меньше или равно

Может ли виртуальная функция быть встроенной?

  • может
  • (Правильный ответ) не может
  • может, только если ее объявить как inline

Выберите правильную синтаксическую конструкцию наследования:

  • class имя_класса [ список_базовых_классов] { список_элементов класса}
  • (Правильный ответ) class имя_класса : список_базовых_классов { список_элементов класса}
  • class имя_класса ( список_базовых_классов ){ список_элементов класса}
  • class имя_класса : : список_базовых_классов { список_элементов класса}

Если имеется код int x; cin >> x; и вводится «1.2«, то что будет в переменной x?

  • (Правильный ответ) 1
  • произойдет ошибка
  • 1.2
  • другое
  • 2

Укажите отличия С++ от С

  • (Правильный ответ) возможность перегрузки операторов
  • (Правильный ответ) поддержка обработки исключений
  • поддержка пользовательских типов данных
  • поддержка указателей на функции
  • (Правильный ответ) обобщенное программирование через шаблоны

Какая функция вызывается при аварийном завершении программы?

  • close();
  • (Правильный ответ) terminate();
  • exit();

Объявлен класс: class A { public: int a,b,c;}; A *obj;. Как обратиться к переменной с?

  • (Правильный ответ) obj->c
  • obj->a->b->c
  • obj->a.c

Cколько параметров может принимать catch

  • ни одного
  • несколько
  • (Правильный ответ) один

Что выводит данная программа, если она верна?

#include <iostream.h>class Х{public:virtual void fun(int a = 0){cout << a;}};class Y: public X{public:virtual void fun(int a = 1) {cout << a ; }};int main(){X *px = new X;px->fun();X *py = new Y;py->fun();return 0;}

  • (Правильный ответ) 00
  • ошибку времени исполнения
  • 0
  • ошибку времени компиляции

Выберите корректные части кода

1. int i =5; switch(i) { case 2: ;break; default:; }2. char c =’a’; switch(c) { case ‘a’: ;break; default:; }3. char* str =»»a»»; switch(str) { case «»a»»: ;break; default:; }

  • 1 и 3
  • (Правильный ответ) 1 и 2
  • 2 и 3
  • все верны

В программе имеется функция с прототипом int func(int k, double f). Какое из следующих объявлений не приведет к ошибке компиляции?

  • (Правильный ответ) int func(double x, int y)
  • char func(int m, void(double g))
  • func(int m, void(double g = 3.14))

Какие функции называются чисто виртуальными?

  • виртуальные функции, не возвращающие никакого значения
  • (Правильный ответ) виртуальные функции, к описанию которых добавлен инициализатор =0
  • виртуальные деструкторы
  • виртуальные функции, объявленные в разделе private
  • виртуальные функции без параметров

Определена шаблонная функция

template <class T> bool cmp(T a, T b){ return a>b? true : false;};

Как осуществить вызов функции cmp() для параметров int a1, double b1?

  • b2 = int(b1); bool c = cmp(a1, b2);
  • bool c = cmp(a1, b1);
  • (Правильный ответ) bool c = cmp(a1, int(b1));

Какое объявление функции-шаблона func верно?

  • template <class T> void func(T a, T b);
  • template <T> void func( a, b);
  • (Правильный ответ) void func<T>(T a, T b);

Может ли статическая функция-член быть виртуальной?

  • (Правильный ответ) не может
  • может

Что выведет на экран фрагмент программы int a = 12; cout << ‘(‘ << setw(0) << a << ‘)’;?

  • (Правильный ответ) (12)
  • ()
  • (12.0)

Что должно стать результатом анализа создаваемой системы?

  • (Правильный ответ) описание назначения системы
  • выработка общих тактических приемов
  • описание архитектуры
  • прототипы системы

Имеются следующие обработчики ошибок:

try {} catch (a){код 1} catch (b){код 2} catch (с){код 3} catch (d){код 4} catch (…){код 5}

Если возникла особая ситуация типа b, какой обработчик будет вызван?

  • catch (b){код 2} и catch (…){код 5}
  • catch (…){код 5}
  • (Правильный ответ) catch (b){код 2}
  • ни один

Какой из этих операторов сложения возвращает сумму по ссылке?

 

  • operator+();
  • operator++();

 

  • 1
  • 1 и 2
  • никакой
  • (Правильный ответ) 2

Какой результат будет у следующего выражения?

int main(){ char *s1; char s2[] = «»Hello»»; *s1 = «»Hi!»»; s1[2] = s2[1]; cout << s1;}

  • He
  • ошибка выполнения
  • (Правильный ответ) Hie
  • Hi

Интерфейс определен следующим образом:

class X { Y a; Z b; void set(Y&); public: void f(const char*); void g(int[10], int); }

Какая проблема может возникнуть при его использовании?

  • в функции X::f неизвестна длина строки
  • (Правильный ответ) типы Y и Z используются так, что их определения должны быть известны
  • функция X::g имеет низкий уровень абстракции

В чем ошибка при таком определении бинарного оператора: String operator+()?

  • (Правильный ответ) для бинарного оператора должен быть задан параметр
  • ошибки нет
  • оператор сложения нельзя переопределять

Какой результат будет у следующего выражения?

main() { char s2[] = «»Hi»»; cout << sizeof(«»Hello»») + sizeof(s2); }

  • (Правильный ответ) 9
  • 8
  • 10

Какой вид иерархии реализует использование?

  • (Правильный ответ) «клиент-сервер»
  • «общее-частное»
  • «целое-часть»

Какую функцию можно использовать для определения, является ли заданный класс базовым для другого класса?

  • (Правильный ответ) int has_base(const Type_info*, int direct=0) const;
  • int same(const Type_info* p) const;
  • const char* name()const;
  • int can_cast(const Type_info* p) const;

Можно ли определить реализацию чисто виртуального метода, определённого в классе-родителе?

  • нельзя
  • (Правильный ответ) можно

Каков синтаксис функций (или операторов) преобразования объекта одного типа в объект другого типа?

  • <имя нового типа> operator ();
  • (Правильный ответ) operator <имя нового типа>();
  • operator <имя нового типа>(<имя старого типа>);

Класс А определен следующим образом:

class A{ int x;};

Отметьте корректный вариант обращения и использования класса A:

  • (Правильный ответ) A a[100];
  • A a = (A)12;
  • A a = new A();

Отметьте верные высказывания для записи
enum {two = 2, three, four, ten = 10, eleven, fifty = ten + 40};?

  • константе eleven присваивается значение, равное сумме значений констант three и four
  • (Правильный ответ) константе eleven присваивается значение 11
  • константе four присваивается значение 3
  • (Правильный ответ) константе three присваивается значение 3

Что возвращает функция, прототип которой объявлен следующим образом:

struct A {char *x; int y;};A fun(void);

  • (Правильный ответ) структуру как результат
  • указатель на структуру
  • ссылку на структуру

Что будет выведено на экран в результате работы следующего фрагмента программы:

double x = 123.456789; printf(«»%g\n»»,x);

  • 123.456789
  • 1.234568e+02
  • (Правильный ответ) 123.457

Что будет напечатано в результате работы следующей программы?

#include <iostream> #include <math> double s2(double x) { return sqrt(x); } double s3(double x) { return sqrt(s2(x)); } double (*pf1)(double); double (*pf2)(double); main() { pf1 = &s2; pf2 = &s3; cout << (*pf1)(25) << ‘ ‘ << (*pf2)(16) << endl; }

  • (Правильный ответ) 5 2
  • ошибка компиляции
  • 2 1
  • 5 4

Какой тип наследования употребляется чаще всего?

  • protected
  • (Правильный ответ) public
  • private

Чему будет равняться переменная «z» после выполнения следующего кода:

int SUMM(int x, int y){ return (x+y);}int main(){ int z=0; { int x=1; int y=3; } z=SUMM(x,y); return 0;}

  • 1
  • 4
  • 0
  • (Правильный ответ) компилятор выдаст ошибку компиляции

Какие два основных вида шаблонов существуют в языке С++?

  • шаблоны конструкторов и деструкторов
  • (Правильный ответ) шаблоны функций и классов
  • шаблоны классов и структур

Что обозначает следующая запись?

class Block<int, 100>{public:Вlоск() {р = new int [100];}~Block {delete [ ] p;}operator int * ( );protected:int * p;};Block<int, 100>:: operator int *(){return р;}

  • инициализацию целых переменных до 100
  • (Правильный ответ) специализацию шаблона публичного класса для хранения 100 целых величин
  • обнуление сотого параметра класса

Какой вид иерархии реализует принадлежность?

  • «клиент-сервер»
  • «общее-частное»
  • (Правильный ответ) «целое-часть»

Укажите тернарные операции:

  • <<
  • (Правильный ответ) ? :
  • &
  • &&
  • ||

Что будет напечатано в результате работы программы:

class A { public: A() { cout << «»A «»; }; virtual A* new_A() { return new A(); } }; class B : public A { public: B(){ cout << «»B «» ;}; A* new_A() { return new B(); } }; void fun(A* p1, A* p2) { A* p3 = p1->new_A(); A* p4 = p2->new_A(); } void main() { A* p1 = new A; B* p2 = new B; fun(p1,p2); }

  • (Правильный ответ) A A B A A B
  • А А А В В В
  • A В B A В B

Какие библиотечные функции можно использовать для выделения и освобождения динамической памяти?

  • new, free
  • (Правильный ответ) malloc, free
  • new, delete
  • malloc, delete

Сколько операндов должна иметь операторная функция бинарного оператора, объявленная как дружественная функция?

  • 3
  • 0
  • 1
  • (Правильный ответ) 2

Выберите правильное (синтаксически верное) объявление функции-шаблона func, принимающей два параметра параметризующего типа template <class T>

  • template <struct T> void func(T a, T b);а
  • template <T> void func(T a, T b);
  • (Правильный ответ) template <class T> void func(T a, T b);

Можно ли создать виртуальную функцию, имитирующую виртуальный конструктор?

  • (Правильный ответ) можно
  • нельзя
  • можно при определенных условиях

Что описывает оператор typedef float (*ptr)(char);

  • (Правильный ответ) тип указателя на функции, каждая из которых имеет параметр типа char и возвращает значение типа float
  • тип указателя на функции, каждая из которых имеет параметр типа float и возвращает значение типа char
  • оператор не имеет смысла

Для списка с принудительной связью верно следующее:

  • в односвязный список с принудительной связью можно поместить объект любого типа
  • (Правильный ответ) объект может попасть в односвязный список с принудительной связью только в том случае, если он является производным от типа, определяющего поле связи
  • (Правильный ответ) в каждом заносимом в список объекте есть поле связи

Произойдет ли ошибка при компиляции этого кода?

class Channel{ public: void SetNumber (int n) { number = n;}; int GetNumber() const { return number;}; int number;};int main(){ private : int n;} Channel ch;{Channel ch; ch.number = 9; ch.SetNumber(10); Channel ch2(2);}

  • (Правильный ответ) да, произойдет, запись неверна
  • произойдет при обнулении n
  • произойдет при n=10
  • нет, не произойдет

Какой из перечисленных ниже операторов не может быть перегружен?

  • >>
  • |
  • (Правильный ответ) .

Узловой класс:

  • предоставляет виртуальные функции и защищенный интерфейс для базовых классов
  • (Правильный ответ) пользуется сервисом, предоставляемым базовым классом
  • не зависит от своих базовых классов

Верно ли объявлен следующий класс?

class MyClass { int n; MyClass (int); ~MyClass (); };

  • (Правильный ответ) класс объявлен верно
  • нет, ошибочна четвертая строка
  • ссылка на класс задана неявно, такая запись ошибочна
  • неизвестен тип элементов класса, и потому такое объявление ошибочно

Что будет выведено на экран?

class A { public: A() { x = 1; }; int f() { return x; }; protected: int x; }; class B { public: B() { x = 2; }; int f() { return x; }; protected: int x; }; class C : public A, public B { }; C* c = new C; cout << c->f(); delete c;

  • 1
  • (Правильный ответ) ошибка компиляции
  • 2

В каком классе находится функция seekg(streampos) ?

  • iostream
  • (Правильный ответ) ios
  • istream
  • ostream

Верен ли нижеприведенный код? Каков результат его работы?

#include <iostream>#include «»conio.h»»int main(){ enum {t, x, y, z ,w}; cout<<t+x+y+z+w; getch(); return 0;}

  • данный код неверен
  • код верен, его результат 5
  • код верен, его результат 6
  • (Правильный ответ) код верен, его результат 10

Верен ли данный код:

class A { public: void f() { cout << 5; } }; class B : public A { public: void f() { cout << 6; } };

  • (Правильный ответ) да, верен
  • такой код вызовет зацикливание
  • код содержит синтаксическую ошибку в последней строке
  • нет, он содержит ошибку компиляции во второй строке

Нужно выделить память для одномерного массива А, состоящего из 10 элементов и затем освободить эту память. Какие из приведенных операторов пригодны для этой цели?

  • (Правильный ответ) int *A; A = new int[10]; … delete [] A;
  • int A = new int[10]; … delete [] A;;
  • int *A; A = new int(10); … delete [] A;

Если метод в базовом классе не объявлен как виртуальный, а в производном он переопределен, когда определяется, какой из методов вызывается?

  • (Правильный ответ) во время компиляции
  • во время выполнения

Если происходит ошибка при выполнении функции new, то

  • программа аварийно завершается
  • происходит исключительная ситуация memoryexception
  • (Правильный ответ) функция возвращает ноль

Инкапсуляция — это:

  • возможность определять новые типы данных, с которыми можно работать почти так же, как и с основными типами данных