![]() |
|
Модераторы: bsa |
![]()
|
|
| TGrey |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 1.12.2007 Репутация: нет Всего: 1 |
Добрый день, возникли пару вопросов.
К примеру в класе идет описание функции
Вот собственно и вопрос зачем перед именем функции *? Я видел чтоб перед типом чар, но так... И для чего используется конст в конце, в книге то написано чтобы избежать изменений данных пользователем, но я непойму как он их изменил бы если бы там небыло конст. И такой вопрос. Клас уже описан(к примеру Man) И создается функция
Ну так вот, знак адресации всегда употребляется когда нам необходимо указать его в функции, клас это же вроде как новый тип даных и мы же можем указать
Зачем тогда в 1 случае адресация, похоже как просто для удобста? |
||||||
|
|||||||
| bsa |
|
||||||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Второй const означает, что данный метод не меняет поля класса - т.е. это константный метод. Если ты при написании тела этого метода случайно попытаешься поменять какие-то переменные внутри класса (или вызвать неконстантные методы), то компилятор тебя обругает.
|
||||||||||||||
|
|||||||||||||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 6 Всего: 162 |
звезда относится к типу Между Man и int концептуального различия нет. То класс и то класс. это, по ходу, ссылка, а не адресация. Прочитай первые главые учебника по С/С++, а то ересь получается. Добавлено через 35 секунд Ух ты, bsa целый трактат накатал |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 6 Всего: 93 |
Скорее то тип и то тип Да ему вообще пора книги писать -------------------- 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 |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 6 Всего: 162 |
||||
|
||||
| TGrey |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 1.12.2007 Репутация: нет Всего: 1 |
Так если я правильно понял.
Тоесть я возвращаю значение которое нельзя будет в дальнейшем изменить. И если бы не было указано *, то возвращалобы только 1 символ, а не строку. Вот такой еще вопрос.
А если это не связанно с Классом, просто функция?! Это сообщение отредактировал(а) TGrey - 4.1.2008, 21:56 |
||||
|
|||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 6 Всего: 93 |
У просто ф-ции такого квалификаторы быть не может, ибо ей this не передаётся(этот const после ф-ции - это квалификация указателя this). Добавлено через 1 минуту и 1 секунду
Если скомпилируется, то да. -------------------- 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 |
|||
|
||||
| TGrey |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 1.12.2007 Репутация: нет Всего: 1 |
А как это this эносится к функции? Можно примерчик?
|
|||
|
||||
| bsa |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Это сообщение отредактировал(а) bsa - 5.1.2008, 20:33 |
||||||||
|
|||||||||
| TGrey |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 1.12.2007 Репутация: нет Всего: 1 |
Ага теперь понятей стало!
А вот эту строку
Можно заменить на
? Кстати m_text вроде как переменная. Первый раз вижу такую инициализацию переменной. m_text(s) ------------------------------- Так а вот еще сижу пробую с динамическими перемеными и тут появился такой вопрос.
но
Тут * ненужны. А в чем собсна разница? И как к этому мне применить delete. Или его нужно применять в классе к name и lname? |
||||||||
|
|||||||||
| bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Инициализация в конструкторе после двоеточия позволяет вызывать конструкторы объектов, так как без этого способа ты не сможешь инициализировать объекты, у которых нет конструктора без параметров (ну или хотя бы со всеми умолчальными параметрами). Да и очень часто такая инициализация может быть быстрее, чем присваивание. Имхо.
Если у тебя есть какой-то указатель p (например, int *p), то: *p == p[0] *(p+1) == p[1] p + 1 = &p[1] Кстати, если ты память выделил так:
|
||||
|
|||||
| TGrey |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 1.12.2007 Репутация: нет Всего: 1 |
Ага на счет указателя понял.
Но вот тут
Меня ругают если разкоментить delete. Это сообщение отредактировал(а) TGrey - 6.1.2008, 13:56 |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 6 Всего: 93 |
Возможно потому, что деструктор находится в private/protected. -------------------- 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 |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Когда ругают, приводи сообщение об ошибке. А то можно только догадываться. |
|||
|
||||
| TGrey |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 1.12.2007 Репутация: нет Всего: 1 |
Нет деструктор в public'е.
Ну ругается оно, как бы относительно... Тоесть программа компилится без ошибок и ерроров, но вот когда я ее запускаю и оно, я так понимаю, доходит до delete выскакивает окно с какимита ошибками и на нем 3 кнопки Повторить, пропустить, закончить. Ну пока не нажать Закончить так и будет выскакивать. Я так и непонял в чем прикол. Динамически то создает класс, а удалять не хочет. Вот эта часть.
----------------------------------------------------------- И вот еще вопрос по этой теме.
Непойму почему, но когда я разкоментирую объявление файла, то в конце программы получаю ошибку Виндосовскую(Отправить, не отправить отчет) жму не отправлять, в проге дописывается Press Any Key To Continue. Стоит мне закоментировать объявление файла, проблемы нет. И это при том что с файлом ничего не делать просто объявить. Если же в него что-то писать, то оно все нормально пишет, но и ошибку я получаю. |
||||
|
|||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |