![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
archimed7592 |
|
||||||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
угу... речь не про char *, вообще то... ну да ладно
во-вторых, речь не о том, как это можно сделать, а про неинициализирующий конструктор. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
||||||
|
|||||||
Fazil6 |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
|
||||
|
|||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
apook Ну у std::string нет коструктора с int, поэтому 0 простой не сгодится. А от такого прога вообще загнется
![]()
А на счет нуля - это ты читал на rsdn, но Visual Studio рассматривает это просто как define. И эти приколы с пустотами вроде только в С были. Добавлено через 4 минуты и 9 секунд А по поводу default-initialization и value-initialization здесь |
|||
|
||||
dead_psh |
|
||||
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 13.3.2007 Репутация: нет Всего: нет |
а копирующий конструктор это конструктор вида
а применяется например вот так
|
||||
|
|||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
... или
|
|||
|
||||
apook |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
Так что-же такое неинициализирующий конструктор? Если любой конструктор что-то инициализирует, то неинициализирующий конструктор -- это тот который не вызывается там где вроде-бы должен, короче его нету. ![]() Я прочитал половину книги "C++для чайников" и там узнал что конструктор по умолчанию вызывается C++ -ом для совместимости c Си и заполняет все нафиг нулями -------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
|||
|
||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
apook, смотря для каких типов и какой ... вот здесь, говорю, написано link
|
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
такого не существует
хотя, не исключено, что ты просто из контекста выдрал - сказанное там справедливо для POD'ов(правда в Си, AFAIK, структуры не инициализировались нулями) -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Fazil6 |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
конструктор инициализирует только то, что указано в списке инициализации.
|
||||
|
|||||
apook |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
to dead_psh кстати в копирующем конструкторе надо однако осуществить проверку
на копирование себя -------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
|||
|
||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
Fazil6, но вызванные конструкторы по умолчанию переменных-членов такую операцию произвести могут? Ну я не про POD естественно. То есть s в твоем случае должно быть иницилизировано чем-то, ведь и std::string есть конструктор по-умолчанию.
Это сообщение отредактировал(а) Xenon - 11.6.2007, 17:16 |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
ну есть конструктор пумолчанию у string ну и что? Никакого отношения к конструктору A1(){} он не имеет и значения внутри объекта s зависят только от конструктора string. В таком классе может быть точно такойже конструктор поумолчанию, который ничего явно не инициализирует и получить вполне мусорное значение в s. |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
м.б. ты имеешь ввиду оператор присваивания? Добавлено через 1 минуту и 2 секунды имхо неявная инициализация не означает её отсутствия -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
Fazil6, ну все равно объект типа string сконструируется и будет неявная его иницилизация и утверждать, что тот конструктор класса ничего ЯВНО не иницилизирует, следовательно никакой иницилизация объектов не будет - нельзя, ведь тот же string будет проиницилизирован опираясь на свой конструктор по умолчанию и это будет неявной иницилизацией. Мусора-то при выводе я не вижу.
Добавлено @ 18:03 apook, проверку на присваивание самому себе делают в operator = Это сообщение отредактировал(а) Xenon - 11.6.2007, 18:04 |
|||
|
||||
apook |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
Ну да а я что говорю, а ну = а что можно же.. а ну да, пойду ка отдохну лучше... -------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |