Здравствуйте, 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();
}
Здравствуйте, 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
}
Здравствуйте, 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();
}