История изменений
Исправление hibou, (текущая версия) :
Ну а какие тонкие нюансы, чтобы выстрелить себе в ногу? То что нельзя оставлять конструктор копирования по умолчанию, если в членах класса есть указатели?
То есть нечто вроде такого:
class NoCopy {
private:
int *s;
public:
NoCopy() { s = new int(1); }
~NoCopy() { delete s; }
};
Тут как бы понятно, что если не переопределить конструктор копирования и оператор равно (=), то как бы будет не очень весело. Точнее наоборот, веселье обеспечено, смотря с какой стороны посмотреть :-). Поскольку если объект этого класса скопировать, то s внутри нового объекта будет указывать на тот же адрес, что и у старого объекта. Веселые ночи отладки обеспечены.
Но как вообще программировать не понимая что делаешь?
Исправление hibou, :
Ну а какие тонкие нюансы, чтобы выстрелить себе в ногу? То что нельзя оставлять конструктор копирования по умолчанию, если в членах класса есть указатели?
То есть нечто вроде такого:
class NoCopy {
private:
int *s;
public:
NoCopy() { s = new int(1); }
~NoCopy() { delete s; }
};
Тут как бы понятно, что если переопределить конструктор копирования и оператор равно (=), то как бы будет не очень весело. Точнее наоборот, веселье обеспечено, смотря с какой стороны посмотреть :-). Поскольку если объект этого класса скопировать, то s внутри нового объекта будет указывать на тот же адрес, что и у старого объекта. Веселые ночи отладки обеспечены.
Но как вообще программировать не понимая что делаешь?
Исходная версия hibou, :
Ну а какие тонкие нюансы, чтобы выстрелить себе в ногу? То что нельзя оставлять конструктор копирования по умолчанию, если в членах класса есть указатели?
То есть нечто вроде такого:
class NoCopy {
private:
int *s;
public:
NoCopy() { s = new Int(1); }
~NoCopy() { delete s; }
};
Тут как бы понятно, что если переопределить конструктор копирования и оператор равно (=), то как бы будет не очень весело. Точнее наоборот, веселье обеспечено, смотря с какой стороны посмотреть :-). Поскольку если объект этого класса скопировать, то s внутри нового объекта будет указывать на тот же адрес, что и у старого объекта. Веселые ночи отладки обеспечены.
Но как вообще программировать не понимая что делаешь?