суббота, 8 января 2011 г.

40. Приведите несколько случаев, когда конструктор вызывается неявно.

Приведение типа, передача по значению, копирование, конструирование внутренних объектов. Конструктор внутренних объектов вызывает сгенерированный конструктор по умолчанию, решил в примере не отражать, и так понятно :)
class A{
  int x;
public:
  A(){};
  A(int p):x(p){};
  A(A const& a){x = a.x;}
};

A f(A a){
  return 3; //это return A(3); пример 3.
}

A g(A a){ 
  return a; //Вызов конструктора копирования. пример 5.
}

int main(){
  A a;
  a = 1; /*это a = A(1); пример 1.*/
  f(2); /*это f(A(2)); пример 2.*/
  g(a); /*Вызов конструктора копирования. пример 4.*/
}

0 коммент.:

Отправить комментарий

Можно использовать теги <b>, <i>