Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2009, 03:38   #1
artush1984
Форумчанин
 
Аватар для artush1984
 
Регистрация: 27.04.2009
Сообщений: 184
По умолчанию Constructors

здрасвуйте!!!!! не могу понять!!!! Есть класс "strings" конструкору нужно передать "char*" как аргумент!!! Ето всё понятно!!! но почиму же обект всё же создаётся когда я создаю обект таким образом
" strings xxx("1234567890"); "??????
Hа C я могy пpосто делать ошибки, на C++ я могy их наследовать!
artush1984 вне форума Ответить с цитированием
Старый 05.06.2009, 08:37   #2
assasin
Форумчанин
 
Регистрация: 27.04.2009
Сообщений: 123
По умолчанию

а в чем проблема? ясно что вызывается конструктор strings(char * str)...
<= P.S. если я тебе помог нажми весы слева <=
assasin вне форума Ответить с цитированием
Старый 05.06.2009, 09:17   #3
artush1984
Форумчанин
 
Аватар для artush1984
 
Регистрация: 27.04.2009
Сообщений: 184
По умолчанию

то что вызивает всм понятно!!!!! Я спрашивал почему вызивает?????????
Hа C я могy пpосто делать ошибки, на C++ я могy их наследовать!
artush1984 вне форума Ответить с цитированием
Старый 05.06.2009, 09:31   #4
assasin
Форумчанин
 
Регистрация: 27.04.2009
Сообщений: 123
По умолчанию

а что еще он должен вызвать? Вы создаете новый объект, компилятор выбирает соответствующий переданным параметрам конструктор...
<= P.S. если я тебе помог нажми весы слева <=
assasin вне форума Ответить с цитированием
Старый 05.06.2009, 09:32   #5
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от artush1984 Посмотреть сообщение
то что вызивает всм понятно!!!!! Я спрашивал почему вызивает?????????
Потому что в стандарте языка так написано, что должен вызываться
Он еще вызовется и если напишите: strings xxx = "1234567890"; конечно если директива explicit не указана
А в чем собственно проблема я так и не понял
pu4koff вне форума Ответить с цитированием
Старый 05.06.2009, 09:35   #6
assasin
Форумчанин
 
Регистрация: 27.04.2009
Сообщений: 123
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
Потому что в стандарте языка так написано, что должен вызываться
Он еще вызовется и если напишите: strings xxx = "1234567890"; конечно если директива explicit не указана
А в чем собственно проблема я так и не понял
Я тоже не понял, видно автору не нравится, что компилятор корректно реагирует на его код
<= P.S. если я тебе помог нажми весы слева <=
assasin вне форума Ответить с цитированием
Старый 05.06.2009, 19:29   #7
artush1984
Форумчанин
 
Аватар для artush1984
 
Регистрация: 27.04.2009
Сообщений: 184
По умолчанию

то что компилятор корректно работает мне нравица! просто мне хочеца понять суть вещей!!! я логику компилятора хотел понять!!!(логику в данной ситуации)!!!!
Hа C я могy пpосто делать ошибки, на C++ я могy их наследовать!
artush1984 вне форума Ответить с цитированием
Старый 05.06.2009, 19:50   #8
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Ага. А конструкция вида:
Код:
strings xxx;
не пугает Вас?
Может будете удивлены, но и тут вызовется конструктор, только конструктор по умолчанию (у которого не параметров), а что самое интересное - если такого конструктора нет, то компилятор создаст его сам.
Какая тут может быть логика? Видит компилятор, что описана переменная определенного типа, значит надо создать объект данного типа. Для классов соответственно вызываются соответствующие конструкторы.
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц