Информация об изменениях

Сообщение Re[3]: Zero initialization от 05.09.2021 20:17

Изменено 05.09.2021 20:23 rg45

Re[3]: Zero initialization
Здравствуйте, Videoman, Вы писали:

V>Мой вопрос, как мне реализовать дефолтный конструктор T, что бы он:

V>
V>T a; - Ничего не инициализировал
V>T a = T(); - Инициализировал 
V>

V>т.е. я хочу в своем классе T имитировать поведение настоящих POD типов, можно ли такое сделать?

Думаю, нельзя. Потому что для non-POD типов (а именно такой класс у тебя получится, если ты реализуешь в нем свой собственный конструктор по умолчанию) в обоих случаях будет вызван один и тот же конструктор. А реализовать в одном конструкторе два разных поведения не получится. Ибо получить информацию о способе инициализации (default или value) внутри конструктора вряд ли возможно. Ну либо я буду очень удивлен

P.S. А даже если и дефолтный конструктор будет сгенерирован компилятором, все равно non-POD типов оба вида инициализации (default и value) также сведутся к вызову одного и того же конструктора.
Re[3]: Zero initialization
Здравствуйте, Videoman, Вы писали:

V>Мой вопрос, как мне реализовать дефолтный конструктор T, что бы он:

V>
V>T a; - Ничего не инициализировал
V>T a = T(); - Инициализировал 
V>

V>т.е. я хочу в своем классе T имитировать поведение настоящих POD типов, можно ли такое сделать?

Думаю, нельзя. Потому что для non-POD типов (а именно такой класс у тебя получится, если ты реализуешь в нем свой собственный конструктор по умолчанию) в обоих случаях будет вызван один и тот же конструктор. А реализовать в одном конструкторе два разных поведения не получится. Ибо получить информацию о способе инициализации (default или value) внутри конструктора вряд ли возможно. Ну либо я буду очень удивлен

P.S. А даже если и дефолтный конструктор будет сгенерирован компилятором, все равно для non-POD типов оба вида инициализации (default и value) также сведутся к вызову одного и того же конструктора.