Выозов конструкторов для одного объекта
От: Аноним  
Дата: 04.12.09 21:35
Оценка:
Доброго времени суток!

Собственно заинтересовало следеющее, вот код:

 
#include <iostream>
#include <string>

using namespace std;

class A {
int a; 
double b;
double * asd;
public:
     A(int a)
        {
        this->a = a;
        //asd = new double [1000000];
        }
    A(double b, double c)
        {
        this->b = b;
        //asd = new double [1000000];
        }
    ~A()
        {
        a = 0;
        b = 0.0;
        //delete [] asd;
        }
     
    };

class B
{
public:
    A aasd;
    B(int aaa): aasd(aaa) {}
 
    
};
int _tmain(int argc, _TCHAR* argv[])
{
   
  A aaaa(1);
  aaaa = A(5.5, 4.0); 
   
    return 0;
}


Слегка удивлен тем что сначала отработал конструктор для параметра 1, затем конструктор для 5.5, 4.0, затем вызвались 2 деструктора... В стандарте за 98 год ничего не нашел, поэтому интересно, такое использование конструкторов вообще корректно?
Re: Выозов конструкторов для одного объекта
От: _DAle_ Беларусь  
Дата: 04.12.09 21:42
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Доброго времени суток!


А>Собственно заинтересовало следеющее, вот код:


А>
А>  aaaa = A(5.5, 4.0); 
А>


В этой строчке создается временный объект. Это эквивалентно примерно следующему коду:
{
  A temp(5.5, 4.0);
    aaaa = temp;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.