Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> функция возвращает cont int, для чего? 
:(
    Опции темы
LexusCheby
Дата 17.9.2007, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 28.1.2007

Репутация: нет
Всего: нет



Вот встретил такую функцию.
const int f() cont
{
   return time;
}

Писали солидные люди, а я никак не пойму зачем передний const :(
PM MAIL   Вверх
EnergoHokum
Дата 17.9.2007, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 600
Регистрация: 10.11.2006
Где: Россия, Ставропол ь

Репутация: нет
Всего: 6



Чтобы вызывающий не смог руками изменить время?
PM MAIL ICQ   Вверх
Fazil6
Дата 17.9.2007, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



видимо, хотели чтобы полученное значение использовалось исключительно как константа
PM MAIL   Вверх
archimed7592
Дата 17.9.2007, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



LexusCheby, это считается хорошей привычкой делать возвращаемые значения const. Точно так же, как и конструкторы explicit. Т.е. по умолчанию всё const, всё explicit и т.д. Для примитивных типов разницы никакой, а вот с агрегатами ситуация намного интересней.


--------------------
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
PM Jabber   Вверх
DjoNIK
Дата 17.9.2007, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 28.9.2006
Где: Питер/Георгиевск

Репутация: 4
Всего: 5



А от каких проблем это может уберечь?
 smile 


--------------------
- Плесни-ка мне холодного кипятку.
- Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды?
- Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку.
(разговор петербуржца и москвича)
PM MAIL ICQ   Вверх
JackYF
Дата 17.9.2007, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(DjoNIK @  17.9.2007,  20:31 Найти цитируемый пост)
А от каких проблем это может уберечь?

от, например

Код

a = b++++;



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
DjoNIK
Дата 17.9.2007, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 28.9.2006
Где: Питер/Георгиевск

Репутация: 4
Всего: 5



А что в 
Код

a = b++++; 

b - это функция?


--------------------
- Плесни-ка мне холодного кипятку.
- Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды?
- Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку.
(разговор петербуржца и москвича)
PM MAIL ICQ   Вверх
Mayk
Дата 17.9.2007, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(archimed7592 @  17.9.2007,  20:04 Найти цитируемый пост)
LexusCheby, это считается хорошей привычкой делать возвращаемые значения const.

Ну не int'ы же.  smile 


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
DjoNIK
Дата 17.9.2007, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 28.9.2006
Где: Питер/Георгиевск

Репутация: 4
Всего: 5



Цитата

Ну не int'ы же

Хорошо. Как быть с SomeMyClass, от чего я оберегаю себя и пользователей моего кода, если функция возвращает const SomeMyClass?


--------------------
- Плесни-ка мне холодного кипятку.
- Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды?
- Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку.
(разговор петербуржца и москвича)
PM MAIL ICQ   Вверх
Mayk
Дата 17.9.2007, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(DjoNIK @  18.9.2007,  00:55 Найти цитируемый пост)

Хорошо. Как быть с SomeMyClass, от чего я оберегаю себя и пользователей моего кода, если функция возвращает const SomeMyClass? 

ну выше же был пример.
Цитата(JackYF @  18.9.2007,  00:34 Найти цитируемый пост)

от, например

Выделить всёкод C++
1:
    
a = b++++;



Код

#include <string>
#include <iostream>


struct Int
{
    int value;

    Int () : value(0){}

    Int operator ++ (int){
        Int copy(*this);
        ++value;
        return copy;

    }
};

int main(){

Int a;
Int b = a++ ++ ++ ++ ++ ++ ++ ++; 

std::cout << a.value << std::endl; // 1
std::cout << b.value << std::endl; // 0
}


Добавлено @ 21:04
При замене Int operator++(int) на const Int op++ код уже не компилируется.

Это сообщение отредактировал(а) Mayk - 17.9.2007, 21:05


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
DjoNIK
Дата 17.9.2007, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 28.9.2006
Где: Питер/Георгиевск

Репутация: 4
Всего: 5



Прошу прощения за  smile , но другой мотивации, кроме как приведенного кода, я придумать не могу!
Придется воспринять это за аксиому без логического  объяснения.
 smile 


--------------------
- Плесни-ка мне холодного кипятку.
- Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды?
- Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку.
(разговор петербуржца и москвича)
PM MAIL ICQ   Вверх
Evgen24
  Дата 17.9.2007, 23:12 (ссылка) |  (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 31.7.2007
Где: Россия

Репутация: нет
Всего: нет



Цитата(DjoNIK @  17.9.2007,  21:31 Найти цитируемый пост)
А от каких проблем это может уберечь?

Эффективность этого приема проявляется при написании больших программ. Лучше сразу обозначить константами те переменные которые в функции не должны менятся, чем потом неделю искать ошибку!
Вообще в больших программах, чем больше ты констант из переменных в функциях вводишь, тем меньше ошибок! 
PM MAIL ICQ   Вверх
DjoNIK
Дата 18.9.2007, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 28.9.2006
Где: Питер/Георгиевск

Репутация: 4
Всего: 5



Цитата

Вообще в больших программах, чем больше ты констант из переменных в функциях вводишь, тем меньше ошибок!

В принципе и в небольших программах - это тоже выручает! Но лучшее - враг хорошего!!! Можно ведь и перестараться.


--------------------
- Плесни-ка мне холодного кипятку.
- Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды?
- Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку.
(разговор петербуржца и москвича)
PM MAIL ICQ   Вверх
archimed7592
Дата 18.9.2007, 05:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(Mayk @  17.9.2007,  20:52 Найти цитируемый пост)
Ну не int'ы же.  smile  

Mayk, ключевое слово "привычка". Дальше думай сам.


--------------------
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
PM Jabber   Вверх
DjoNIK
Дата 18.9.2007, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 320
Регистрация: 28.9.2006
Где: Питер/Георгиевск

Репутация: 4
Всего: 5



То есть ставить const в возвращаемом значении - правило; не надо ставить лишь в редких случаях (исключения).
Но не наоборот.
Просто до этого топика я ни разу такой конструкции не видел. Она мне кажется экзотической и мое сознание сознание отказывается воспринимать это как истину! Но я что-нибудь придумаю с вашей помощью  smile 


--------------------
- Плесни-ка мне холодного кипятку.
- Как кипяток может быть холодным?! Ты, верно, хочешь кипяченой воды?
- Какая ещё кипяченая вода? Не пудри мне мозги - налейхолодного кипятку.
(разговор петербуржца и москвича)
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0583 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.