Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274

Поля класса const, методы класса const, объекты класса const

26.01.2020, 20:59. Показов 3817. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
привет


услышал , что есть методы и поля , и объекты const. говориться что если я сделаю вот так


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
class foo {
public:
const int a=11;
 
void viev()const{std::cout << a;}  //  первый вопрос, правильно ли я воткнул этот модификатор const ? не в начало ли его надо?
 
 
 
};
 
int main(){
 
foo obj;
 
obj.viev();  // должна быть ошибка, но у меня ее нет.  значит я что-то сделал неправильно. что именно?
 
 
 
}
посути нужно было , если следовать учебнику и объект сделать типа const

C++
1
const foo obj;
помогите разобраться
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.01.2020, 20:59
Ответы с готовыми решениями:

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

Поле класса const; ?
Встретил следующий код в книге &quot;С++. Стандартная библиотека. Николай Джосьютис&quot; (привожу только интересующую его часть): class...

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

21
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
27.01.2020, 21:55
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от pcmax Посмотреть сообщение
конструктор поумолчанию не имеет формальных параметров. он такого вида будет в данном случае foo(){};
Причем тут конструктор по умолчанию? У нас разговор про foo obj{666, 555}. Будет явно объявленный конструктор с двумя int, он вызовет этот конструктор с двумя int. Не будет никаких конструкторов - сгенерирует, перебив что вы там в объявлении полей написали. Будет какой-то конструктор, но не принимающий два int - компиляция упадет.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class Test
{
public:
    Test(int x,int y){
        std::cout<<x<<" "<<y<<std::endl;
    }
};
 
int main()
{
    Test test{1,2};//фигурные скобки
    return 0;
}
1
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13240 / 6872 / 1827
Регистрация: 18.10.2014
Сообщений: 17,419
27.01.2020, 22:03
Цитата Сообщение от Renji Посмотреть сообщение
Причем тут конструктор по умолчанию? У нас разговор про foo obj{666, 555}. Будет явно объявленный конструктор с двумя int, он вызовет этот конструктор с двумя int. Не будет никаких конструкторов - сгенерирует, перебив что вы там в объявлении полей написали. Будет какой-то конструктор, но не принимающий два int - компиляция упадет.
Если "не будет никаких конструкторов", то не "сгенерирует, перебив что вы там в объявлении полей написали", а использует агрегатную инициализацию, если ваш класс ее допускает. Агрегатная инициализация - это не конструктор.

И тут есть небольшая тонкость с версиями стандарта языка. В С++11 указание умолчательных инициализаторов для полей класса автоматически запрещало агрегатную инициализацию для объектов такого класса. То есть

C++
1
2
3
4
5
6
7
8
9
struct S
{
    int x = 42, y;
};
 
int main() 
{
    S s{ 1, 2 }; // <- Ошибка в C++11: нет такого конструктора
}
http://coliru.stacked-crooked.... 9d72f54cec

В C++14 и позже эту особенность устранили и такие классы уже допускают агрегатную инициализацию.

http://coliru.stacked-crooked.... 66b86a3b47
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.01.2020, 22:03

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

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

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

Копировать пустую строку в const char* Конструктор структуры (класса)
Я думал, что это копирует в ch символ конца строки char *ch=new char; strcpy(ch,&quot;&quot;); delete ch; В обычном случае оно так и...

Инициализация в объявлении константных статических (const static) членов-данных класса.
Привет. Подскажите пожалуйста почему нельзя создавать в классе const static float, а const static int можно? class A{ const...


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru