Форум программистов, компьютерный форум 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) В начальный момент времени порождается конечное число агентов, расположенных в пространстве, и в клетках пространства размещается сахар, от 0 до некоторого N в каждой клетке. 3) Каждая клетка сетки может содержать не более одного агента. 4) Агент рождается с двумя...
C++ Ошибка в коде
Проверьте эту программу пожалуйста, вроде она не сложная, а я не могу найти ошибку вообще уже пол часа сижу. #include <iostream> #include <conio.h> #include <math.h> #include <stdlib.h> #include <stdafx.h> using namespace std; int main() {
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.
Видимо фраза про семантику вставлена не ради красного словца. А в учебнике про это, кстати, ни слова. Нельзя к константному объекту применять неконстантные функции и всё. Момент на самом деле неочевидный.

Тему можно закрыть.
 
Текущее время: 02:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru