Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для limeniye
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923

Свойства класса C++ и модификаторы доступа

24.01.2021, 13:16. Показов 1237. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В C# есть подобного рода реализация
C#
1
public Name {get; private set;}
Данный код запрещает пользователю изменять Name из вне класса, но разрешает "просматривать" информацию, которую хранит Name.
Я хочу сделать что-то подобное на C++, но нахожу только реализации через методы:
C++
1
2
3
4
std::string Students::get_last_name()
{
    return Students::last_name;
}
C++
1
2
3
4
5
// Установка фамилии студента
void Students::set_last_name(std::string student_last_name)
{
    Students::last_name = student_last_name;
}
Допустим у меня есть 20 "свойств". Я так понимаю мне для них нужно 40 методов расписать?)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.01.2021, 13:16
Ответы с готовыми решениями:

Модификаторы доступа и заголовочный файл
Есть заголовочный файл trees.h: #pragma once #include <conio.h> int f=3; Короче, в нём объявляется и используется...

Модификаторы доступа на чтение и запись
Я разобрался с public, private и protected. А как можно сделать чтобы переменная была публичной, но только на чтение или только на запись?

Могут ли аксессоры свойства иметь различные модификаторы доступа
A) Да B) Нет C) Только аксессор get D) Только аксессор set

7
 Аватар для Nishen
1358 / 856 / 366
Регистрация: 26.02.2015
Сообщений: 3,816
24.01.2021, 13:20
Лучший ответ Сообщение было отмечено limeniye как решение

Решение

Цитата Сообщение от limeniye Посмотреть сообщение
Допустим у меня есть 20 "свойств". Я так понимаю мне для них нужно 40 методов расписать?)
Если поля должны быть недоступны извне, то да.
Цитата Сообщение от limeniye Посмотреть сообщение
Students::last_name
C++
1
Students::last_name
Вот так измени
C++
1
last_name
Добавлено через 49 секунд
Цитата Сообщение от Nishen Посмотреть сообщение
Если поля должны быть недоступны извне, то да.
Тут просто другой вопрос сам собой появляется - ты архитектуру нормально продумал?
1
 Аватар для limeniye
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
24.01.2021, 13:23  [ТС]
Цитата Сообщение от Nishen Посмотреть сообщение
Тут просто другой вопрос сам собой появляется - ты архитектуру нормально продумал?
Вы о том, что у меня 20 свойств? Это условность, как и класс Student.

Ибо "лицом к лицу лица не увидать, большое видится на расстоянии".
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
24.01.2021, 13:23
Цитата Сообщение от limeniye Посмотреть сообщение
Я так понимаю мне для них нужно 40 методов расписать?
поля класса помещаешь в секцию private, так как к ним доступ запрещен, и прописываешь только функции члены для чтения.
C++
1
2
3
4
5
6
7
8
9
10
class Class
{
private:
    int field1, field2, field;
 
public:
    int GetField1();
    int GetField2();
    int GetField3();
};
1
 Аватар для limeniye
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
24.01.2021, 13:24  [ТС]
_stanislav, полезно, спасибо
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
24.01.2021, 13:24
Цитата Сообщение от Nishen Посмотреть сообщение
Я так понимаю мне для них нужно 40 методов расписать
20 функций-членов получается.
0
 Аватар для limeniye
1182 / 624 / 160
Регистрация: 19.04.2018
Сообщений: 2,923
24.01.2021, 13:27  [ТС]
_stanislav, а если я могу изменять и получать значение свойства, тогда лучше делать просто публичное поле?
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
24.01.2021, 13:34
Цитата Сообщение от limeniye Посмотреть сообщение
а если я могу изменять и получать значение свойства, тогда лучше делать просто публичное поле?
если константы то можно.
C++
1
2
3
4
5
class Class
{
public:
    const int field1{1}, field2{2}, field{3};
};
если же переменные, то лучше для доступа организовать функции-члены, мало ли какая логика туда потом будет записана. С гетерами и сетерами код обретает дополнительную гибкость.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.01.2021, 13:34
Помогаю со студенческими работами здесь

Изменить модификаторы доступа public к полям класса на private
Был тут вот такой код: namespace ConsoleApplication3 { class Room { public double length; //длина ...

Найти все имеющие модификаторы доступа Private компоненты класса, имя которого вводится, и поместить их в файл
Нужна помощь!Задан текстовый файл, содержащий фрагмент программы на Delphi. Найти все имеющие модификаторы доступа Private компоненты...

Записать синтаксис объявления и определения свойства класса для доступа к элементам двухмерного массива данны
Записать синтаксис объявления и определения свойства класса для доступа к элементам двухмерного массива данных

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

Модификаторы доступа
Помогите реализовать механизм задания (Public/Private/Protected) атрибутов класса в Python, не используя inspect. Приветствуются любые идеи...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в КА2. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа в КА2. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru