Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Беру и спокойно вызываю неконстантную функцию для константного объекта - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Random randomize в vs13 http://www.cyberforum.ru/cpp-beginners/thread1141632.html
как записать в массив случайные числа vs13 почему-то нет такой команды(random)
C++ Реализовать динамическую структуру, содержащую информацию об указанных полях Реализовать динамическую структуру, содержащую информацию: фамилия и инициалы заказчика; адрес; вид ремонтных работ; стоимость; продолжительность проведения. Программа должна обеспечивать: -... http://www.cyberforum.ru/cpp-beginners/thread1141629.html
Модель «Сахарный мир» C++
Модель «Сахарный мир» Модель «Сахарный мир» описывается следующими правилами: 1) Пространство является двумерной сеткой. 2) В начальный момент времени порождается конечное число агентов,...
C++ Ошибка в коде
Проверьте эту программу пожалуйста, вроде она не сложная, а я не могу найти ошибку вообще уже пол часа сижу. #include <iostream> #include <conio.h> #include <math.h> #include <stdlib.h> #include...
C++ Класс для рисования кругов http://www.cyberforum.ru/cpp-beginners/thread1141597.html
Класс для рисования кругов (хранить радиус R и координаты x,y центра). Вычислять площадь круга и длину окружности.
C++ Найти значение 1.1-1.2+1.3-... Всем привет. Есть задача, но мозг временно не работает.. Помогите, пожалуйста. Условие. Задано целое число N(>0). Найти значение 1.1-1.2+1.3-... (N слагаемых, знаки чередуются). При этом условный... подробнее

Показать сообщение отдельно
mariko_11
2 / 2 / 1
Регистрация: 11.03.2013
Сообщений: 64
07.04.2014, 20:05  [ТС]
Так у вас как раз конструктор.
И функция set.
Поясняю, что смутило.
Дейтел, "Как программировать на C"
"Компиляторы C++ соблюдают объявления const настолько строго, что ими полностью отвергаются любые вызовы элементов-функций для константных объектов"
Конструктору можно менять объект. Другим элементам-функциям - нельзя. Чёрным по белому. А тут оказывается, что раз из конструктора, то МОЖНО. Что на этот счёт говорит стандарт ? Везде ли можно звать из конструктора неконстантные элементы-функции ? Или так делают только некоторые компиляторы ?

Это конструктор и деструктор
Чем именно они отличаются от "совсем функций"?

Добавлено через 21 минуту
Итак, стандарт, п. 12.1.4:
A constructor shall not be virtual (10.3) or static (9.4). A constructor can be invoked for a const,
volatile or const volatile object. A constructor shall not be declared const, volatile, or const
volatile (9.3.2). const and volatile semantics (7.1.6.1) are not applied on an object under construction.
They come into effect when the constructor for the most derived object (1.8) ends.
Видимо фраза про семантику вставлена не ради красного словца. А в учебнике про это, кстати, ни слова. Нельзя к константному объекту применять неконстантные функции и всё. Момент на самом деле неочевидный.

Тему можно закрыть.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru