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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.07.2015, 17:49   #1
robix
Пользователь
 
Регистрация: 16.07.2015
Сообщений: 31
По умолчанию Объясните пожалуйста пару конструкций

Здравствуйте. Можете объяснить вот что:

1. int* func( void ) const { ...... };
Я как понял это функция без параметров, которая возвращает указатель типа int. Но непонятно к чему тут относится слово const ?


2. Value = (short int)((Jee & 0xFF0000) >> 16);
Тут Jee это переменная типа int
Можете объяснить как понимать эту запись?
robix вне форума Ответить с цитированием
Старый 17.07.2015, 20:14   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
которая возвращает указатель типа int
что за поток сознания? указатель на инт, а не указатель типа...

Цитата:
Но непонятно к чему тут относится слово const ?
https://msdn.microsoft.com/ru-ru/library/6ke686zh.aspx

Цитата:
Можете объяснить как понимать эту запись?
Точно так, как написано. Битовые операции читали? Сдвиги видели? Фактически это просто взятие третьего байта в инте.
p51x на форуме Ответить с цитированием
Старый 20.07.2015, 21:13   #3
robix
Пользователь
 
Регистрация: 16.07.2015
Сообщений: 31
По умолчанию

Спасибо.

1.
Я имею ввиду есть ли разница между
int* func( void ) const { ...... } и int* const func( void ) { ...... } ?
robix вне форума Ответить с цитированием
Старый 20.07.2015, 21:26   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Конечно - одно это функция, которая не изменяет объект и вовзращает указатель на инт, а второе просто функция, возвращающая константный указатель на инт
p51x на форуме Ответить с цитированием
Старый 22.07.2015, 18:25   #5
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от robix Посмотреть сообщение
Спасибо.

Я имею ввиду есть ли разница между
int* func( void ) const { ...... } и int* const func( void ) { ...... } ?

Код:
// здесь const - часть сигнатуры функции-члены
// он означает, что функция-член не будет изменять 
// логическое состояние класса
// то есть, внутри функции данные-члены класса изменяться не будут
// за исключением тех, что были помечены mutable
int* func( void ) const { ...... }

Код:
// это самая обычная функция
// которая возвращает не изменяемый указатель на int
// то есть, получив такой указатель, 
// вы уже не сможете перенацелить его на другой адрес
int* const func( void ) { ...... }
пример:
Код:
 

int v = 10;

// здесь pointer2int - это константа
auto pointer2int = func();

// ошибка: нельзя изменить константу
pointer2int = &v;
_Bers вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объясните пожалуйста ВеРоНиЧкА92 C# (си шарп) 2 28.05.2015 20:30
Объясните пару строчек в этой программе vierumk C# (си шарп) 7 28.08.2012 15:48
объясните пару непонятных слов. skauzer_blr Помощь студентам 1 04.05.2012 22:37