prosdo.ru 1
  1. Что такое абстрактные пользовательские типы и какими способами они могут быть заданы? Чем эти способы отличаются друг от друга?





  1. Что такое класс? Как он определяется? Что такое «поля» и «методы» класса?




  1. Какие уровни доступа имеются к членам классов и в чём их отличие?




  1. Что такое дружественные функции и в чём особенность их работы?




  1. Что такое конструкторы и деструкторы класса, какие цели преследуются в случае введения их в класс? В чём их особенность объявления и работы? Может ли быть объявлен класс без конструктора? Может ли быть объявлен класс без деструктора? Каким образом можно вызвать конструктор? Каким образом можно вызвать деструктор?




  1. Что такое указатель this, для чего он применяется и когда используется?




  1. Что такое статические члены класса, в чём их особенность и для чего они применяются? Как задаётся значение статических членов класса? Как используется указатель this для статических членов класса?




  1. В чём отличие инициализации полей класса от присвоения значений внутри методов? Есть ли такие типы данных, которые можно только инициализировать, но нельзя присваивать им значения? Если есть, то какие и в чём особенность их инициализации?




  1. Что такое конструктор копирования, зачем (и каким образом) он применяется? Будет ли являться конструктором копирования конструктор s2 класса s2 в следующей программе:

struct s1

{

int i;

float x;

s1(int j, float y)

{

i = j;

x = y;

}

};

struct s2

{

int i;

float x;

s2 (const s1& a)

{

i =a.i;

x=a.x;

}

};


void main()

{

s1 obj1 (1, 3.7);

s2 obj2 (obj1);

}