Добрый день!
Навеяло топиком про обнуления структур. Не могу понять смысл записи:
STRUCT st;
st = STRUCT();
Вроде и в первой строке и во второй вызывается конструктор, но в первом случае
обнуления не происходит, а во втором оно есть. Только что проверил.
Кому не лень, поясните пожалуйста.
Спасибо.
Здравствуйте, Аноним, Вы писали:
А>Добрый день!
А>Навеяло топиком про обнуления структур. Не могу понять смысл записи:
А>А> STRUCT st;
А> st = STRUCT();
А>
А>Вроде и в первой строке и во второй вызывается конструктор, но в первом случае
А>обнуления не происходит, а во втором оно есть. Только что проверил.
А>Кому не лень, поясните пожалуйста.
А>Спасибо.
Если у тебя STRUCT это POD-тип, то в первом строке конструктор не вызывается.
А во второй сначала создаётся временная структура, для которой производится обнуление, а потом её содержимое копируется в st.
Здравствуйте, davenger, Вы писали:
D>Здравствуйте, Аноним, Вы писали:
А>>Добрый день!
А>>Навеяло топиком про обнуления структур. Не могу понять смысл записи:
А>>А>> STRUCT st;
А>> st = STRUCT();
А>>
А>>Вроде и в первой строке и во второй вызывается конструктор, но в первом случае
А>>обнуления не происходит, а во втором оно есть. Только что проверил.
А>>Кому не лень, поясните пожалуйста.
А>>Спасибо.
D>Если у тебя STRUCT это POD-тип, то в первом строке конструктор не вызывается.
У POD типов НЕТ конструкторов.
... << RSDN@Home 1.1.0 stable >>
Здравствуйте, Аноним, Вы писали:
А>Навеяло топиком про обнуления структур. Не могу понять смысл записи:
А>А> STRUCT st;
А> st = STRUCT();
А>
А>Вроде и в первой строке и во второй вызывается конструктор, но в первом случае
А>обнуления не происходит, а во втором оно есть. Только что проверил.
Ну так а где определение саого типа 'STRUCT'? От него много чего зависит.
Если считать, что 'STRUCT' — POD тип, то конструктор тут не вызывается ни в первом, ни во втором случае. Семантика объявления без инициализатора и семантика инициализатора '()' для таких типов описывается без привлечения каких-либо конструкторов. Просто говорится, что в первом случае нет никакой инициализации, а во втором случае делается инициализация по-умолчанию, которая для такого объекта выливается в инициализацию нулями.
Здравствуйте, Андрей Тарасевич, Вы писали:
АТ>Здравствуйте, Шахтер, Вы писали:
D>>>Если у тебя STRUCT это POD-тип, то в первом строке конструктор не вызывается.
Ш>>У POD типов НЕТ конструкторов.
АТ>У классов всегда есть конструкторы. Даже если они POD-классы.
Да. Это я вчера перебрал шампьянского.
... << RSDN@Home 1.1.0 stable >>