Это:
MyClass::MyClass()
{
variable1 = 10;
boolean2 = false;
};
не инициализация! Члены будут инициализированы до запуска тела конструктора, а затем вы назначаете значения. Что вы имеете в виду, вероятно, разница между
Список инициализаторов
MyClass::MyClass() : variable1(10), boolean2(false) {}
и в инициализации класса (доступно начиная с C ++ 11, я считаю) в заголовке:
struct MyClass {
int variable1 = 10;
boolean2 = false;
};
В обоих последних случаях значения используются для инициализации элементов, поэтому разницы в скорости нет. Однако в первом случае вы делаете больше, чем на самом деле хотите (инициализация + назначение), и вам следует избегать этого, если это возможно.
Тонкая разница между инициализацией в классе и списком инициализаторов (см., Например, здесь ) заключается в том, что
variable1 = 10;
может включать в себя копию. Это можно обойти с помощью прямой инициализации списка:
struct MyClass {
int variable1{10};
bool boolean2{false};
};
Однако для int
и bool
это не имеет никакого значения.