Вопросы по С++


1. Может ли класс иметь два метода с одинаковым именем? Два конструктора?
2. Что такое this? Где можно использовать это слово?
3. В чем отличие между delete и delete[]?
4. Что такое крнструктор копирования?

5. Рассмотрим следующий фрагмент кода

class X;
void f(X obj) {
  ...
}
...
main() {
  X obj;
  f(obj); // <------
}

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

6. Какие функции и сколько раз будут вызваны при выполнении следующего фрагмента (ответ по строчкам):

class X;
X *p1 = new X(100);
X *p2 = new X[100];
delete[] p2;

7. В каком случае вызывается деструктор?

8. При каком условии функция, которая не является методом класса, может обращаться к полям класса?

9. В чем отличие объявлений
void f(X obj) { .... }
void f(X *obj) { ... }
void f(const X& obj) { ... }?

10. Является ли следующий фрагмент программы синтаксически корректным? Если нет, то в чем ошибки?
class X { int k; };

int f(const X& obj) {
    obj->k = 0;
    return obj.k;
}