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

Для поля объекта запретить запись, но оставить чтение. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ 4 вопроса http://www.cyberforum.ru/cpp/thread309351.html
Здравствуйте, ответьте пожалуйста кто знает на 4 вопроса пожалуйста: 1)что означает в паскале with d do begin ----- и как заменить эту команду на С 2)что означает reset(f); -------- и как заменить эту команду на С
C++ Быстрая сортировка и объекты класса На днях столкнулся с такой задачей. Попробую ее сформулировать. Дан класс. class A { ... vector<double> x; vector<double> y; void output(); // вывод на экран ... } http://www.cyberforum.ru/cpp/thread309115.html
Односвязный список, запись и чтение из файла C++
Здравствуйте уважаемые форумчане. Имееться реализация односвязного списка из книги Дейтлов "Как программировать на С++" Нужно сделать запись, чтение и просмотр из файла, т.е. файл использовать как базу данных. Почему то не могу справиться с этим заданием, прошу вашей помощи. Программа реализует телефонный справочник. // test.cpp // Тестовая программа для класса List.
C++ прога при компиляции ругаеться на "unit1.h"
вся проблема в том,что у меня єтого файла нет,так как прога с нета качаная.можно ли его как нить востановить?? #include <vcl.h> #pragma hdrstop #include «Unit1.h» // – #pragma package (smart_init) #pragma resource «*.dfm» #include<math.h>
C++ Подсчитывание количество марок в коллекции http://www.cyberforum.ru/cpp/thread308139.html
День добрый. задали сделать задачу на 2х языках программирования( на паскале и на си). на паскале я сделал, на си не могу( так только начинающий). помогите сделать эту программу на языке СИ. благодарю. ЭВМ используется при разборе коллекции марок. Составить программу, подсчитывающую число марок по спорту, по искусству и прочих. Подсчитать общее количество марок в коллекции. Использовать...
C++ не работают условия кроме sravnenie[i].kozer==1 && sravnenie[j].kozer==1 int sravnenie_kart_v_massive_sravnenie(KARTA *kart,KARTA *sravnenie,int *nsravnenie,int *sravnenie11,int *sravnenie12,int *fsravnenie) {int n,i,j,f1=0,f2=0; n=0; for(i=*sravnenie11;i<9 && f1==1;i=i+2) for(j=*sravnenie12;j<10 && f2==1;j=j+2) if(sravnenie.kozer==5 && sravnenie.kozer==1) {n=n+1; f1=1; f2=1; printf("%d пара карт бита\n",n); подробнее

Показать сообщение отдельно
skvor
640KB мне хватило на всё.
118 / 49 / 2
Регистрация: 07.06.2009
Сообщений: 442

Для поля объекта запретить запись, но оставить чтение. - C++

31.05.2011, 20:32. Просмотров 797. Ответов 3
Метки (Все метки)

Традиционное оформление объектов заключается в том, что поля-значения помещаются в private класса, а получение значений или модификация производятся через функции-интерфейсы. Если поля представляют сложную структуру, то относительные затраты на вызовы функций достаточно малы. Для простых данных типа int, очевидно, сам вызов функции будет на порядок дороже простого копирования.

Обойти использование функций можно было бы путем использования ссылок с модификатором const.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class A
{ private:
    int b;
  public:
    A(int i);
    const int *bb;
};
 
A::A(int i)
{ bb=&b;
  b=i;
}
 
int main(int argc, char *argv[], char *env[])
{ system("clear");
 
  A V(123);
  std::cout<<*(V.bb)<<std::endl;
  // *(V.bb)=234; // Присваивание не комплируется, это хорошо.
 
  int Error;
  V.bb=&Error; // А вот такая зараза возможна!
 
  return 0;
}
но здесь остаётся проблема с возможностью изменения самого указателя.

Вопрос - можно ли это решить. Попытки использования const указателей или ссылок, приводят к тому, что этот указатель нельзя инициализировать в конструкторе.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 15:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru