Вы должны всегда использовать member initializer list для инициализации членов вашего класса.
Обратите внимание, что я говорю инициализировать, что означает предоставление стоимости на момент строительства. Если вы этого не сделаете, эти члены имеют неопределенное значение, пока вы явно не вызовете метод set
, чтобы явно установить элемент с определенным значением.
Есть ли различия между использованием конструктора или с помощью setValues
как метод для этого.
Да, есть разница. C++ предоставляет вам возможность initialize членов класса, это через список членов-членов. Если вы не инициализируете членов в списке инициализаторов членов, члены остаются неинициализированными, т. Е. Имеют неопределенные значения. Никогда бы не хотелось, чтобы состояние членов было неопределенным.
При использовании метода набора, вы на самом деле присваивающей и не инициализации элемента. Существует разница между двумя:
Cost Member Initialization = Object Construction
Cost of Member Assignment = Object Construction + Assignment
все зависит. при построении конструктора объектов используется для инициализации определенных (если не всех) членов. но вы не можете сделать что-либо с конструкторской постконституцией объекта. Это то, где setController подобно функциям членов пригодится. –