Главная / Программирование /
Язык программирования C++ / Тест 7
Язык программирования C++ - тест 7
Упражнение 1:
Номер 1
Для чего нужны классы?
Ответ:
 (1) для определения новых типов в программе 
 (2) для упрощения работы со сложными структурами данных 
 (3) для упрощения работы с константами 
 (4) для соединения данных и операций над ними 
Номер 2
В каком случае описание класса верно?
1. class A
{
public:
int x;
int summ(int a){return x+a;}
};
2. class my_cl
{
public:
int f;
int summ(int a){return x+a;}
};
3. class B
{
public:
int F;
void Ch_F(int x)
{
F=x;
return F;
}
};
Ответ:
 (1) в первом 
 (2) во втором 
 (3) в третьем 
Упражнение 2:
Номер 1
Какая из записей соответствует обращению к атрибуту m_arg класса AC в определении метода этого же класса?
Ответ:
 (1) this.m_arg.AC 
 (2) m_arg 
 (3) AC.this.m_arg 
Номер 2
Если имеется код
class A { public: int a; };
A obj;
как обратиться к переменной a?
Ответ:
 (1) obj.a 
 (2) obj-a 
 (3) obj::a 
Номер 3
Если имеется код
class A { public: int a, b, c; };
A obj;
как обратиться к члену класса c?
Ответ:
 (1) obj.c 
 (2) obj->c 
 (3) c.obj 
 (4) obj.public.c 
Упражнение 3:
Номер 1
Какой из приведенных ниже прототипов операции сложения для класса
class A {int x; double y; ... }
является наиболее правильным?
Ответ:
 (1) void operator+ (const A& a) const 
 (2) const A& operator+(A a) 
 (3) A operator+(const A a) const 
 (4) const A& operator(const A& a) 
Номер 2
Какой будет результат выполнения следующего кода?
class A {
public:
int inc(int x) { return ++x; };
int inc(short x) { return x + 2; };
};
A obj; int y = 5;
cout << obj.inc(y);
Ответ:
 (1) 6 
 (2) 7 
 (3) 8 
Номер 3
Какой будет результат выполнения следующего кода?
class A {
public:
int y;
int inc(int x) { return ++y; };
int inc(short x) { return x + y; };
};
A obj; int y = 5; obj.y = 6;
cout << obj.inc(y);
Ответ:
 (1) 6 
 (2) 7 
 (3) 11 
 (4) ошибка компиляции 
Упражнение 4:
Номер 1
Укажите в какой строке кода произойдет ошибка компиляции?
1: class Channel
2: { public:
3: void SetNumber (int n) { number = n;};
4: int GetNumber() const { return number;};
5: int number;};
6: int main()
7: { Channel ch;
8: ch.number = 9;
9: ch.SetNumber(10);
10: Channel ch2(2);
11: return 1;
12: }
Ответ:
 (1) в пятой 
 (2) в восьмой 
 (3) в десятой 
Номер 2
Укажите в каких строках кода произойдет ошибка компиляции?
1: class A
2: { public:
3: int x;
4: int GetX() { return x; };};
5: int main()
6: { A b;
7: b.SetX(2);
8: b.GetX();
9: A b1(2);
10:}
Ответ:
 (1) в восьмой 
 (2) в четвертой 
 (3) в седьмой 
 (4) в девятой 
Номер 3
В каких выражениях правильно определен метод класса Ping?
class Ping
{ public: float f, d;
int a;
void MathFunc(double D);
};
Ответ:
 (1) Ping::MathFunc(double D) {f = D;} 
 (2) void Ping::MathFunc(double D) {f = D;} 
 (3) void Ping::MathFunc(double D) {this->f = D;} 
Упражнение 5:
Номер 1
Верен ли код
Team::Player p;
p.GoGoGo(); для класса Team, описанного следующим образом:
class Team
{
public:
int score;
class Player
{
public:
void GoGoGo(){ printf("Player is going to a goal.\n"); }
};
void SetScore(int x){ score = x;}
void ShowScore(){printf("%d\n",score);}
};
Ответ:
 (1) да, верен 
 (2) нет, неверен 
 (3) верен, если сформировать контекстные указатели 
 (4) верен, если увеличить его приоритет 
Номер 2
При определении метода запись this-> говорит о том, что:
Ответ:
 (1) атрибут принадлежит объекту, получившему сообщение 
 (2) атрибут принадлежит классу, определенному в заголовочном файле 
 (3) атрибут не принадлежит какому-либо классу 
Номер 3
Имеется класс:
class Team
{
public:
int score;
class Player
{
public:
void GoGoGo(){ printf("Player is going to a goal.\n"); }
};
void SetScore(int x){ score = x;}
void ShowScore(){printf("%d\n",score);}
};
Выберите из нижеприведенных записей корректные коды для этого класса:
1. Team::Player p;
p.GoGoGo();
2. Team t;
t.Player p;
p.GoGoGo();
Ответ:
 (1) первый 
 (2) второй 
 (3) оба верны 
 (4) оба ошибочны 
Упражнение 6:
Номер 2
Укажите правильный доступ к членам класса:
class my
{ public: double Z;
int f(int c, int d) {return c+d;}
char s;
} T1, T2;
Ответ:
 (1) T1->Z = 23.1; 
 (2) T2.f(4,1); 
 (3) my.T2->s = 'L'; 
Номер 3
Укажите какому классу принадлежит атрибут Z1
class t
{ public: double sum::Z1;} C;
class sum
{ public: double t::Z1;} D;
Ответ:
 (1) классу t 
 (2) обоим классам 
 (3) запись неверна 
Упражнение 7:
Номер 1
Какой будет результат следующей программы?
class t
{ public: int sum;
float f(int a)
{
sum++;
return sum * a;
}
} cl;
int main()
{
cl.sum = 10;
cout << cl.sum << " " << cl.f(4);
}
Ответ:
 (1) 11 44 
 (2) 10 44 
 (3) 10 240 
Номер 2
Что будет выведено в стандартный поток вывода в результате исполнения следущей программы?
class Add
{ public: short S1;
int f(int x)
{ return S1 + ++x;}
int A(short a, short b);
} K1;
int Add::A(short a, short b)
{
this->S1 += a*b;
return this->S1;
};
int main()
{
K1.S1 = 2;
K1.f(2);
K1.A(0, 1);
cout << K1.S1;
return 0;
}
Ответ:
 (1) 0 
 (2) 10 
 (3) 2 
 (4) 4 
Номер 3
Какое второе число будет выведено в результате выполнения следующего кода?
class t
{ public: int sum;
float f(int a, short m)
{
sum++;
return sum * a - m;
}
} v;
int main()
{
v.sum = 5;
cout << v.sum << " " << v.f(5, 2);
}
Ответ:
 (1) 27 
 (2) 28 
 (3) 29 
 (4) 5 
 (5) 6 
Упражнение 8:
Номер 1
Какие операторы не могут быть переопределены пользователем:
Ответ:
 (1) % 
 (2) :: 
 (3) . 
Номер 2
Вызовет ли следующее объявление ошибку компиляции
class A{
public: void sum(double s1,double s2);
int sum (int s1,int s2);
};
Ответ:
 (1) да 
 (2) нет 
Номер 3
Вызовет ли следующее объявление ошибку компиляции
class A{
public: double sum(int double,double s2);
int sum (int s1,int s2);
}
Ответ:
 (1) да 
 (2) нет