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

Селектор - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.63
Vidok
 Аватар для Vidok
36 / 36 / 2
Регистрация: 03.09.2011
Сообщений: 279
12.01.2012, 13:57     Селектор #1
Имеется селектор
C++
1
double size() const { return _n;}
Подскажите что значит const?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2012, 13:57     Селектор
Посмотрите здесь:

ос селектор Linux
jQuery IE не понимает селектор
Сложный селектор jQuery
Android Селектор списка
Написать селектор jQuery
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
12.01.2012, 14:12     Селектор #2
Значит, что метод не может менять никакие поля класса (кроме тех, что объявлены как mutable), и, как следствие, может быть вызван для константных объектов.
Vidok
 Аватар для Vidok
36 / 36 / 2
Регистрация: 03.09.2011
Сообщений: 279
12.01.2012, 14:17  [ТС]     Селектор #3
C++
1
const double& get (size_t i) const;
В этом случае тоже самое?
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
12.01.2012, 14:19     Селектор #4
Vidok, да, тот const, что стоит в конце прототипа, обозначает то, что я уже написал. А тот, который в начале, говорит, что будет возвращена константная ссылка.
Vidok
 Аватар для Vidok
36 / 36 / 2
Регистрация: 03.09.2011
Сообщений: 279
12.01.2012, 14:22  [ТС]     Селектор #5
А во втором случае это тоже селектор или селектор-модификатор?
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
12.01.2012, 14:26     Селектор #6
Vidok, понятия не имею, впервые слышу термин "селектор", применённый к методам классов в С++. Могу сказать одно: первый метод, судя по всему, возвращает количество элементов в некотором контейнере, поэтому его в принципе можно назвать методом-аксессором, а именно геттером. Второй метод, назван get, а значит, также призван возвращать некоторый член класса. По его параметру можно предположить, что он возвращает некоторый элемент последовательности (контейнера). Но это только предположения, оба метода в принципе можно назвать геттерами, или, более обще, аксессорами.
Vidok
 Аватар для Vidok
36 / 36 / 2
Регистрация: 03.09.2011
Сообщений: 279
12.01.2012, 14:27  [ТС]     Селектор #7
Как все запутанно блин)
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
12.01.2012, 14:31     Селектор #8
Vidok, да ничего сложного. В С++ нет такого жёсткого разделения на аксессоры, как, например, в C# (где для этих целей применяются свойства). Любой метод, который позволяет изменить или получить член класса, можно назвать сеттером или геттером соответственно от английских слов set (установить) и get (получить).
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
12.01.2012, 14:33     Селектор #9
А какой смысл возвращать константную ссылку на double?
Vidok
 Аватар для Vidok
36 / 36 / 2
Регистрация: 03.09.2011
Сообщений: 279
12.01.2012, 14:36  [ТС]     Селектор #10
C++
1
void setX (double x) { _x = x;}
вот что у нас модификатором называется.
Вот класс
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class WrappedVector
{
 
private:
    static const size_t _n;
    double * _v;
public:
    WrappedVector();
    WrappedVector(const WrappedVector&);
    ~WrappedVector();
    double size() const { return _n;}
    double& getSet (size_t i);
    const double& get (size_t i) const;
    WrappedVector& operator=(const WrappedVector&);
 
    bool operator==(const WrappedVector&) const;
    bool operator!=(const WrappedVector&) const;
    double operator*(const WrappedVector&) const;
    const WrappedVector operator*(double) const;
    const WrappedVector operator+(const WrappedVector&) const;
 
};
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
12.01.2012, 14:38     Селектор #11
fasked, если сильно пофантазировать, то можно решить, что это аналог метода at() для вектора, например. И тут два варианта: либо сделано для единообразия с неконстантным вариантом (который, естественно, возвращает неконстантную ссылку), либо класс переделывался из шаблонного, в котором, разумеется, возвращалась ссылка на value_type.

Добавлено через 1 минуту
Цитата Сообщение от Vidok Посмотреть сообщение
вот что у нас модификатором называется.
Это то, что я называл сеттером. В принципе, его можно назвать модификатором, ведь в результате его работы объект модифицируется. Тот метод, про который вы говорили "модификатор", таковым я бы называть не стал.

fasked, смотри ка, я угадал, вектор))
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
12.01.2012, 14:57     Селектор #12
Цитата Сообщение от silent_1991 Посмотреть сообщение
это аналог метода at() для вектора, например
Цитата Сообщение от Vidok Посмотреть сообщение
C++
1
2
double& getSet (size_t i);
const double& get (size_t i) const;
Если методы делают одно и тоже и разница лишь в константности, то лучше дать им одинаковые имена.
Vidok
 Аватар для Vidok
36 / 36 / 2
Регистрация: 03.09.2011
Сообщений: 279
12.01.2012, 15:03  [ТС]     Селектор #13
GetSet вызывается на ввод данных в вектор, get для считывания)
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
12.01.2012, 15:07     Селектор #14
Vidok, вам правильно сказали, нужно сделать пару методов get (а лучше at), которые имеют сигнатуры:
C++
1
2
double& at(size_t index);
const double& at(size_t index) const;
Vidok
 Аватар для Vidok
36 / 36 / 2
Регистрация: 03.09.2011
Сообщений: 279
12.01.2012, 15:13  [ТС]     Селектор #15
Еще раз) второй конст не дает менять атрибуты, а первый это конст. ссылка по отношению к самому вектору? Для чего она я не очень понял, & - это у нас что бы иметь прямой доступ к атрибуту? А конст?
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
12.01.2012, 15:16     Селектор #16
Vidok, первый конст говорит, что по этой ссылке нельзя менять переменную, на которую она ссылается.
В принципе можно написать
C++
1
double at(size_t index) const;
, тогда будет возвращена копия переменной, а не ссылка на неё. Но я бы, для единообразия, использовал всё-таки константную ссылку.
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
12.01.2012, 15:56     Селектор #17
Цитата Сообщение от Vidok Посмотреть сообщение
Для чего она я не очень понял, & - это у нас что бы иметь прямой доступ к атрибуту? А конст?
Без const доступ на чтение и запись, с const только на чтение. Если Вы захотите создать константный объект своего класса, то было бы логично предоставлять доступ к данным только на чтение.
Цитата Сообщение от Vidok Посмотреть сообщение
GetSet вызывается на ввод данных в вектор, get для считывания)
Ссылка предоставляет доступ однвременно и для чтения и для записи, нет смысла делать два разных метода. Если объект будет const, то обращение будет автоматически происходить к константному методу.

Добавлено через 20 минут
Цитата Сообщение от fasked Посмотреть сообщение
нет смысла делать два разных метода.
То есть с разными именами.
Vidok
 Аватар для Vidok
36 / 36 / 2
Регистрация: 03.09.2011
Сообщений: 279
12.01.2012, 18:27  [ТС]     Селектор #18
Это задание) я тоже думал почему два разных, но так дали.
Vidok
 Аватар для Vidok
36 / 36 / 2
Регистрация: 03.09.2011
Сообщений: 279
16.01.2012, 19:36  [ТС]     Селектор #19
Продолжу здесь свои вопросы по ооп)
Что значит вот такая запись? Инициализация параметров нулями с какой целью?
C++
1
Point (double x=0, double y=0):_x(x),_y(y){//_x=x;_y=y;};
И чем отличается такая инициализация от обычной в фигурных скобках?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2012, 20:22     Селектор
Еще ссылки по теме:

jQuery Мудрённый селектор
HTML, CSS Не понятный селектор
Селектор jQuery

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

Или воспользуйтесь поиском по форуму:
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
16.01.2012, 20:22     Селектор #20
С такими банальными вопросами Вам уже лучше обратиться к книгам.
Yandex
Объявления
16.01.2012, 20:22     Селектор
Ответ Создать тему
Опции темы

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