LINUX.ORG.RU

История изменений

Исправление 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 внутри нового объекта будет указывать на тот же адрес, что и у старого объекта. Веселые ночи отладки обеспечены.

Но как вообще программировать не понимая что делаешь?