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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 58, средняя оценка - 4.62
BART
7 / 2 / 1
Регистрация: 17.11.2009
Сообщений: 116
#1

Сеттеры и геттеры в классах С++! - C++

17.05.2011, 21:18. Просмотров 9352. Ответов 4
Метки нет (Все метки)

Сдравствуйте!Не могли бы вы мне обьяснить зачем нужны сеттеры и геттеры в классах с++ и как их использовать в основной функции!Заранее спасибо!(очень прошу объяснение попроще)
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2011, 21:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сеттеры и геттеры в классах С++! (C++):

Константы, геттеры/сеттеры и производительность - C++
Есть глобальная константа, определяющая размер большого количества массивов. Также есть множество обращений к массивам с использованием...

Реализация методов доступа к закрытым полям (геттеры и сеттеры) - C++
Здраствуйте. Нужно реализовать в программе методы get и set Вот мой код: Заголовочный файл #include <iomanip> class Matrix { ...

Нормально ли размещать геттеры, сеттеры, прочие методы из 1 строчки в .h файлах? - C++
Скажите, нормальная ли это практика в c++ помещать геттеры, сеттеры, всякие проверки (например, isInitialized) и прочие методы содержащие...

Геттеры и геттеры - почитать по этому поводу - C++
Подскажите чего можно почитать по этому поводу чтоб доступно и понятно......спасибо))))) Добавлено через 46 минут :wall:

Определить, какие из этих имен встречаются во всех классах, какие есть хотя бы в двух классах, и какие - только в одном классе - C++
Для каждого из четырех классов указаны имена девочек, обучающихся в них. Определить, какие из этих имен встречаются во всех классах, какие...

Геттеры создают объекты - C++
Пытаюсь из класса вытащить поле map class AutoShop { map<int, Manager> mapManagers; map<int, Client> mapClients; map<int,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
17.05.2011, 21:22 #2
http://ru.wikipedia.org/wiki/Setter
http://ru.wikipedia.org/wiki/Геттер_(программирование)
0
BART
7 / 2 / 1
Регистрация: 17.11.2009
Сообщений: 116
17.05.2011, 21:24  [ТС] #3
это не совсем тот ответ которого я ждал, хотелось бы "живого" объяснения!
0
silent_1991
Эксперт С++
4964 / 3040 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
17.05.2011, 21:41 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вот небольшой поясняющий код:

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
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
 
class Foo
{
public:
    Foo(int foo):
    m_foo(foo)
    {
    }
 
    void set_foo(int foo)
    {
        m_foo = foo;
    }
 
    int get_foo() const
    {
        return m_foo;
    }
 
private:
    int m_foo;
};
 
int main()
{
    Foo bar(10);
 
    std::cout << bar.get_foo() << std::endl;
 
    bar.set_foo(20);
 
    std::cout << bar.get_foo() << std::endl;
 
    return 0;
}
Есть некоторый класс Foo. Единственное его поле - переменная целого типа m_foo. Принцип инкапсуляции предполагает, что она должна быть скрыта, т.е. должна находиться в private-секции. Но мы хотим каким-то образом с ней работать, считывать её и устанавливать для неё новое значение. Для работы с ней мы используем сеттер/геттер.
Сеттер устанавливает переменную в некоторое новое значение. Для чего он нужен? Для того, чтобы мы не дай бог не занесли в переменную невалидное значение. Например, некоторый класс предполагает хранение только чётных чисел (пример синтетический, но понятный). Если бы поле m_foo было открыто, мы вполне могли бы написать bar.m_foo = 3. И таким образом занесли бы невалидные данные в объект (скажем, если все остальные методы основываются на предположении, что поле m_foo хранит именно чётное число, то при занесении в него нечётного числа они могут работать неверно, вплоть до того, что уронят программу). Используя же сеттер, мы можем прежде, чем приравнивать тройку полю m_foo, проверить её на чётность и, убедившись, что условие не выполняется, адекватно на это отреагировать.
Геттер же нужен, наоборот, для того, чтобы считать значение переменной. Ещё один синтетический пример. Например, нам нужно, чтобы при каждом обращении к переменной увеличивался счётчик считываний. При обращении bar.m_foo (если бы переменная находилась в открытой секции) мы бы упустили одно из таких обращений и счётчик не увеличили, при использовании же геттера мы наверняка знаем, что число обращений будет подсчитано правильно.
9
BART
7 / 2 / 1
Регистрация: 17.11.2009
Сообщений: 116
17.05.2011, 23:12  [ТС] #5
О!Спасибо, это именно то что я искал!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.05.2011, 23:12
Привет! Вот еще темы с ответами:

константы в классах - C++
в классе используется константа типа double. Как правильно задать ее? как static const double внутри класса или просто написать...

Видимость в классах - C++
Дана программа #include&lt;iostream&gt; using namespace std; class a {protected: int a1; public: void fc() ...

Ограничения в классах C++ - C++
Ребят всем привет! В общем пишу курсовую работу на данную тему (ограничения в классах) и сейчас нахожусь в небольшом недоумении, читаю...

Ошибка в классах - C++
Добрый день! Мне необходимо разбить 1 класс на 2: базовый и производный! Я вроде сделал, но вылезает ошибка, что нехватает фигурной...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.05.2011, 23:12
Ответ Создать тему
Опции темы

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