Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
3 / 3 / 2
Регистрация: 21.02.2015
Сообщений: 77
1

Поле класса const; ?

02.12.2016, 23:45. Показов 1243. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Встретил следующий код в книге "С++. Стандартная библиотека. Николай Джосьютис" (привожу только интересующую его часть):
C++
1
2
3
4
5
6
7
class Person
{
public:
    string firstname const;
    string lastname const;
...
};
И вот мне не ясно, к чему вообще он? Такой код возможен или это ошибка в книге? Компилятор на него ругается...
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.12.2016, 23:45
Ответы с готовыми решениями:

int const * const foo(const int* param) const - разъясните значение квалификаторов
int const * const foo(const int* param) const -----1------2----------3----------------4 1: ?...

Const в функциях-членах класса
setSmth() - некий метод класса myClass const myClass setSmth(); myclass setSmth() const; ...

Что значит const в конструкторе класса?
Здравствуйте, не понимаю что значит const в конструкторе класса. Встречался с const только когда он...

Const throw(), наследование от класса exception
В принципе, проблема решена, но хочу разобраться. Код в MSVS: #include <iostream> #include...

10
Падаван С++
447 / 261 / 89
Регистрация: 11.11.2014
Сообщений: 916
02.12.2016, 23:58 2
ACTIONFENIX, скорее всего опечатка const можно писать для указания константности объекта, константности указателя и константности метода и перед названием переменной
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//одно и тоже
const int value = 1;
int const value = 2;
//...
class someClass {
public:
    void PI(void) const { return 3.14; }
};
//...
const int* ptr = new int(5);
*(ptr) = 10;//error
ptr = &other;//no error
 
int* const ptr2 = new int(5);
*(ptr2) = 10;//no error
ptr2 = &other;//error
 
const int * const ptr3 = new int(3);
*(ptr3) = 5;//error
ptr3 = other;//error
Добавлено через 2 минуты
насколько я помню const еще можно перед структурами/классами писать и если объявлять сразу же объекты то они будут константны т.е
C++
1
2
3
4
const class someClass {} obj;
//тоже самое что
class someClass {};
const obj;
1
Вездепух
Эксперт CЭксперт С++
11697 / 6376 / 1724
Регистрация: 18.10.2014
Сообщений: 16,080
03.12.2016, 00:00 3
Лучший ответ Сообщение было отмечено ACTIONFENIX как решение

Решение

Цитата Сообщение от ACTIONFENIX Посмотреть сообщение
И вот мне не ясно, к чему вообще он?
Это точно там так написано?

Тот же пример в интернете имеет вид

C++
1
2
3
4
class Person {
    ...
    string firstname() const;
    string lastname() const;
А это совсем другое дело.
1
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
03.12.2016, 00:05 4
Цитата Сообщение от ACTIONFENIX Посмотреть сообщение
привожу только интересующую его часть
стр.258, стр.512.
Миниатюры
Поле класса const; ?  
0
Падаван С++
447 / 261 / 89
Регистрация: 11.11.2014
Сообщений: 916
03.12.2016, 00:06 5
ACTIONFENIX, если как подметил TheCalligrapher, там const после метода, то это как я и написал уже выше, константность метода, т.е гарантирует что внутри метода не будет изменений членов класса(если не помечены как mutable)
0
3 / 3 / 2
Регистрация: 21.02.2015
Сообщений: 77
03.12.2016, 00:12  [ТС] 6
nd2, не то, чтобы мне был смысл врать...
Миниатюры
Поле класса const; ?  
0
obivan
03.12.2016, 00:13
  #7

Не по теме:

ACTIONFENIX, явно опечатка

0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
03.12.2016, 00:27 8
Цитата Сообщение от ACTIONFENIX Посмотреть сообщение
не то, чтобы мне был смысл врать...
Что не то? Страница какая? Эта?
Миниатюры
Поле класса const; ?  
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
03.12.2016, 00:36 9
Цитата Сообщение от ACTIONFENIX Посмотреть сообщение
не то, чтобы мне был смысл врать...
они к этому и клонят) Нужна книга и номер страница и решим кто врёт)
0
3 / 3 / 2
Регистрация: 21.02.2015
Сообщений: 77
03.12.2016, 00:46  [ТС] 10
nd2, стр.296

Добавлено через 1 минуту
nd2, у нас разные версии/издания книги... у меня эта тема в 8 разделе

Добавлено через 5 минут
rikimaru2013, издание 2004 года, с.296
0
DrOffset
03.12.2016, 09:12     Поле класса const; ?
  #11

Не по теме:

Цитата Сообщение от nd2 Посмотреть сообщение
Что не то?
Он имел в виду "не то чтобы". Просто запятая там лишняя. Это кстати к вопросу о том, зачем (русскоговорящему) программисту знать русский язык. :)

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.12.2016, 09:12

Только константное статическое поле НЕ МОЖЕТ быть поле членом класса !
class CCoords { static const float rate = 1.0f; // ОШИБКА !!! bool IsComputed; ...

Массив объектов одного класса как поле другого класса
Доброе время суток. Мне тут в универе задали лабу, нужно создать класс полем которого будет массив...

Параметр const T & val = T() в конструкторе шаблонного класса
Добрый день! Начал разбираться с шаблонами и наткнулся на такой пример: template < typename T...

Инициализация экземпляра класса, как поле другого класса
Всем доброго времени суток ! Есть класс: class a{ public: a(int _type): type(_type) {} ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru