Код: Выделить всё
class A
{
public:
A ()
{
A a;
....
}
....
};
Код: Выделить всё
class A
{
public:
~A()
{
A a;
....
}
....
};
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Код: Выделить всё
class A
{
public:
A ()
{
A a;
....
}
....
};
Код: Выделить всё
class A
{
public:
~A()
{
A a;
....
}
....
};
Нельзя возвращать указатели на автоматические локальные переменные, так как после возврата эти переменные не существуют.... *f(...)
{
...x;
...
return &x;
}
И ссылки на такие переменные тоже возвращать нельзя. По той же причине.... &f(...)
{
...x;
...
return &x;
}
синтаксис локальной переменной использован не по назначению, что может сбивать с толку тех, кто не прочитает целиком тело функции. Если уж переменная фактически глобальна, то так её и объявите.... &f(...)
{
static ... x;
....
return &x;
}
Сионист писал(а):Про локальный объект в конструкторе и деструкторе и про возврат ссылки на статическую локальную переменную мне ни где не попадалось.
Код: Выделить всё
classs CSomeClass
{
public:
// default constructor
CSomeClass()
{
// some initialization code
}
// copy constructor
CSomeClass(const CSomeClass rhs)
{
// some copy code
}
private:
// some private methods and fields
};
Очевидно, копирование будет нормально работать, если поля исходного класса не ссылочные. А если ссылочные, то новый класс и rhs будут содержать поля с одинаковыми ссылками. После уничтожения rhs поля нового класса будут указывать на участки памяти, которые более не доступны.Кто увидет и опишет суть проблемы