Re[5]: Вызвать конструктор напрямую
От: yatagarasu Беларусь  
Дата: 09.12.09 15:00
Оценка: 1 (1) :))
Здравствуйте, Caracrist, Вы писали:

C>Здравствуйте, wander, Вы писали:



W>>
W>>for(..)
W>>{
W>>  x[i].reset();
W>>}
W>>



C>
C>struct Sputnik
C>{
C> int & pogodaSeichas;
C> Sputnik(int& pogoda) : pogodaSeichas(pogoda){}
C>};

C>class SomeClass : Sputnik
C>{
C> int pogoda[31];
C>public:
C> SomeClass() 
C>   : Sputnik(pogoda[KakoysegodnyaDen()])
C> {
C> }
C> void reset(); //жду реализации
C>}
C>


void
SomeClass::reset()
{
    this->~SomeClass();
    new (this) SomeClass();
}
Re[2]: Вызвать конструктор напрямую
От: Кодт Россия  
Дата: 09.12.09 21:37
Оценка: 2 (2)
Здравствуйте, wander, Вы писали:

R>>Другой мой коллега утверждает, что

R>>
R>>void proc()
R>>{
R>>   SomeClass();
R>>}
R>>

R>>не только вызовет конструктор, но и _выделит_ память под безымянный объект в стеке и еще и деструктор вызовется при выходе из процедуры.
W>Так и есть.

Неточно. Деструктор вызовется не при выходе из процедуры, а при выходе из полного выражения. http://codepad.org/lbomv3Cp
struct foo
{
  string s;
  foo(string s) : s(s) {}
  ~foo() { cout << s; }
};

void temps()
{
  foo("alpha ");
  cout << "bravo ";
  foo("charlie ");
}

void locals()
{
  foo a("alpha ");
  cout << "bravo ";
  foo c("charlie ");
}

int main()
{
  temps();  // alpha bravo charlie
  locals(); // bravo charlie alpha
}
Перекуём баги на фичи!
Re[3]: Вызвать конструктор напрямую
От: wander  
Дата: 10.12.09 00:40
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, wander, Вы писали:


К>Неточно.

Согласен.
Re[5]: Вызвать конструктор напрямую
От: VoidEx  
Дата: 10.12.09 15:45
Оценка:
Здравствуйте, Caracrist, Вы писали:

C>
C>struct Sputnik
C>{
C> int & pogodaSeichas;
C> Sputnik(int& pogoda) : pogodaSeichas(pogoda){}
C>};

C>class SomeClass : Sputnik
C>{
C> int pogoda[31];
C>public:
C> SomeClass() 
C>   : Sputnik(pogoda[KakoysegodnyaDen()])
C> {
C> }
C> void reset(); //жду реализации
C>}
C>



void reset()
{
  this->~SomeClass();
  new (this) SomeClass();
}

Re[6]: Вызвать конструктор напрямую
От: VoidEx  
Дата: 10.12.09 15:46
Оценка:
Здравствуйте, VoidEx, Вы писали:

От жеж, опоздал. Лень читать всё было.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.