Отвечая на ваше редактирование: как вы решаете какую проблему? Не ясно
в чем проблема. Если вашему классу нужен деструктор (и нет
полиморфизм в игре), он, вероятно, нуждается в операторе присваивания и
конструктор копирования. Аналогично, при «отслеживании» конструкций и
разрушения, вы, вероятно, должны предоставить оба, так как они будут
быть названным.
В противном случае: если проблема в том, что вы создаете, а затем
присваивать, а не строить с правильным значением немедленно,
простой ответ «не делай этого». Компилятор делает то, что вы говорите
к. Если вы напишите:
MyClass var;
var = MyClass(3);
у вас есть конструкция по умолчанию, за которой следует конструкция
временное, назначение и уничтожение временного. если ты
написать:
MyClass var(3);
или
MyClass var = 3;
у вас есть только одна конструкция. (Обратите внимание, что, несмотря на внешность,
это нет назначения в последнем фрагменте. Только строительство.)
Для учеников эта разница проявляется в том, как вы пишете
Конструктор:
ClientClass::ClientClass() { var = MyClass(3); }
- конструкция по умолчанию, за которой следуют создание, назначение и
уничтожение временного;
ClientClass::ClientClass() : var( 3 ) {}
это просто конструкция с правильным значением. (Скорее всего, это
вторая форма является предпочтительной.)