Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.69/16: Рейтинг темы: голосов - 16, средняя оценка - 4.69
0 / 1 / 0
Регистрация: 12.10.2018
Сообщений: 10

Сравнение методов доступа к данным класса

12.10.2018, 14:36. Показов 3877. Ответов 49
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Изучаю С++. И маленький перфекционист внутри меня не даёт покоя. Допустим есть класс.В нем находится поле класса типа массив(data) и публичный метод для доступа к ячейке этого массива(getCell). Далее в классе нужен ПРИВАТНЫЙ метод для обработки строки массива, который проверяет некоторые ячейки в строке(isMyRow). Как в этом методе правильней(оптимальней) обращаться к ячейкам массива: c помощью метода getCell или с помощью индексации[].
По идее индексация оптимальней, так как не задействует стек. Так что скажете ? Или я всё таки ерундой занимаюсь, задавая такие глупые вопросы??
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class MyClass{
private:
int data[3][3];
bool isMyRow(int row);
public:
int getCell(int x, int y);
 
};
 
 
...
 
 
bool  MyClass::isMyRow(int i){
//как надо?
//так?
return (data[row][0]==data[row][1] );
 
//или так?
// return getCell(row,0)==getCell(row,0);
 
}
P.S. Вообще стараюсь не задавать таких посредственных вопросов и указатели более менее понимаю. Но эти мелочи не дают покоя. И гуглил, но гугл молчит.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.10.2018, 14:36
Ответы с готовыми решениями:

Обьявление методов доступа к данным класса.
Не компилируется программа //Обьявление класса Cat. //Переменные-члены обьявляются закрытыми, а открытые методы доступа ...

Напишите реализацию методов, предоставляющих доступ к данным класса. Отобразите в программе работу этих методов
Реализация методов класса. Напишите реализацию методов, предоставляющих доступ к данным класса. Отобразите в программе...

Сравнение скорости доступа к данным
Просто ужас берёт... http://www.rsdn.ru/article/db/DBSpeed.xml

49
0 / 1 / 0
Регистрация: 12.10.2018
Сообщений: 10
16.10.2018, 21:40  [ТС]
Студворк — интернет-сервис помощи студентам
Я не волнуюсь, хотя эта "война" длится долго. А вообще я просто пытаюсь наверстать упущенное. Можно сказать, я вернулся в мир программирования спустя некоторое время.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
16.10.2018, 21:49
Цитата Сообщение от alexbez Посмотреть сообщение
Я не волнуюсь, хотя эта "война" длится долго. А вообще я просто пытаюсь наверстать упущенное. Можно сказать, я вернулся в мир программирования спустя некоторое время.
К какому выводу пришли по теме? Нужны ли внутри класса его внешние интерфейсы?
Цитата Сообщение от alexbez Посмотреть сообщение
int getCell(int x, int y);
вот этот Ваш геттер никак не может изменить данные. Он возвращает значение и совершенно бесполезен и безопасен поэтому, в смысле изменения данных. Но что-то из обсуждавшегося Вы поняли?
0
0 / 1 / 0
Регистрация: 12.10.2018
Сообщений: 10
16.10.2018, 21:51  [ТС]
IGPIGP, Для себя я решил, что нужны. А так наверно не все однозначно. Разные программисты, разные религии С++... Но на своём уровне я могу об этом много не думать.
Об инвариантах и изменяемых данных тоже понял более-менее (что должен был понять)
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
16.10.2018, 21:58
Цитата Сообщение от alexbez Посмотреть сообщение
Для себя я решил, что нужны.
Это неудача.
Цитата Сообщение от alexbez Посмотреть сообщение
Разные программисты, разные религии С++...
Никаких религий. Данный вопрос не является делом вкуса, привычки или стиля. Это простой и фундаментальный вопрос.
Цитата Сообщение от alexbez Посмотреть сообщение
Но на своём уровне я могу об этом много не думать.
Уровень сам не повысится. Но долго-то и не нужно тут думать, для общего ответа, а нюансы - дело всей жизни, но их тут не требуется пока.
Впрочем как знаете. Сама тема, хоть и проста, а оказалась неожиданно интересной, именно, в обсуждении.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
17.10.2018, 11:25
Цитата Сообщение от IGPIGP Посмотреть сообщение
nonedark2008 написал первым всё что нужно
он написал лажу.
нормальные люди так не делают.

потому что нет ни одной причины усложнять себе жизнь на ровном месте.

Добавлено через 49 секунд
Цитата Сообщение от IGPIGP Посмотреть сообщение
написано достаточно и есть люди которые поняли.
что-то я их здесь не наблюдаю.
ни одного.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
17.10.2018, 20:39
Цитата Сообщение от hoggy Посмотреть сообщение
ни одного.
Даже ТС понял
Цитата Сообщение от alexbez Посмотреть сообщение
Теперь стало понятнее. Спасибо за разъяснение проектирования.
но
Цитата Сообщение от hoggy Посмотреть сообщение
что-то я их здесь не наблюдаю.
hoggy, - не вижу, не понимаю, не наблюдаю, это же ваши проблемы. Я уж не говорю о том, что интерфейс от реализации учат отделять с самого начала. Но вот avgoor, не смог выразить вам своего недоумения. Вы не понимаете. Но вот что интересно. Мне приходилось писать ахинею (кто без греха), но аргументация всегда закон. Как можно не признать ошибку? Вы же, мало того, что стремитесь сказать последнее слово, но делаете это без аргументов (их и быть не может, так как вы неправы) и по-хамски:
Цитата Сообщение от hoggy Посмотреть сообщение
он написал лажу
Я предвижу, что и тут вы скажете, что-то в ответ. Валяйте. Больше говорить с вами не о чём.
1
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
18.10.2018, 12:23
Цитата Сообщение от IGPIGP Посмотреть сообщение
Даже ТС понял
тс схавал бред, который ему втюхал говнокодер.
у тс сейчас нет собственного понимания момента.

а вот вы, судя по развитию сюжета говнокодера совсем не поняли.

вы не сможете привести пример кодом, который иллюстрирует позицию говнокодера.

если бы у вас было такое понимание, и вы смогли бы привести такой пример,
полагаю вам стало бы очевидно, почему пример - пример говнокода.
а даже если и нет, то думаю, мне не составит труда вам это разъяснить.

сейчас же вы какую то херню на пальцах пытаетесь загнать,
и мне не очевидно:
нафига вы мне все это пишите, что сказать пытаетесь,
и какое это вообще имеет отношение к сабжу?

Цитата Сообщение от IGPIGP Посмотреть сообщение
не вижу, не понимаю, не наблюдаю, это же ваши проблемы.
если вы не в состоянии ясно донести свои мысли: нафига вообще пытаться вас понять?
могу просто послать вас в жопу, и через 30 секунд забыть о вашем существовании.
вы - не проблема.

Цитата Сообщение от IGPIGP Посмотреть сообщение
Я уж не говорю о том, что интерфейс от реализации учат отделять с самого начала. Но вот avgoor, не смог выразить вам своего недоумения. Вы не понимаете.
это здесь причем?

вот к чему вы вообще заявили: "интерфейс учат отделять от реализации" ?

к чему это было сказано?

я не понимаю.

потому что эта тема не имеет ни малейшего отношения ни к сабжу,
ни к господину avgoor

ваши тезисы чем то смахивают на какой то рандомный бред.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
18.10.2018, 19:50
Цитата Сообщение от hoggy Посмотреть сообщение
всегда, когда есть функция-член для доступа к данным,
нужно использовать именно эту функцию-член.
Вот это и есть бред.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
19.10.2018, 12:09
Цитата Сообщение от IGPIGP Посмотреть сообщение
Вот это и есть бред.
- что это?

- это инструмент специально предназначенный для доставания кокосов.

- но использовать специальный инструмент специально предназначенный для доставания кокосов - это бред! нужно делать через жопу. и что бы кокосы могли упасть на голову, и раскроить башку.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
19.10.2018, 20:02
Цитата Сообщение от hoggy Посмотреть сообщение
это инструмент специально предназначенный для доставания кокосов.
Это интерфейс. Средство взаимодействия с объектом извне. Внутри он может использоваться, но зачастую это бред. Нет это не бред. Это непонимание основ. Для того чтобы изменить состояния не нарушая инвариант, но за пределами досягаемости одного шага, можно конечно соорудить новый объект, а старый выбросить. Для этого придётся использовать указатели. Это потому что ссылка бесполезна в этом кейсе, а оператор присваивания тоже (как вы утверждаете) должен использовать публичный метод который ограничен инвариантом. Случай с треугольником вам непонятен и всё сказанное не вам. Может кому-то интересно будет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.10.2018, 20:02

Напишите реализацию методов, предоставляющих доступ к данным класса
Реализация методов класса. Напишите реализацию методов, предоставляющих доступ к данным класса. Отобразите в программе...

Почему дружественная функция с перегруженным оператором << не имеет доступа к данным класса?
В заголовочном файле &quot;klass.h&quot; есть класс: class klass { int x; public: klass(); ~klass(); void show(); friend void...

Реализовать ввод исходных данных, расчет и вывод данных в виде методов класса. В Main только создание объектов и вызов методов
Всем привет) помогите пожалуйста с заданием &quot;Реализовать ввод исходных данных, расчет и вывод данных в виде методов класса. В Main только...

Treeview описание методов работы с данным элементом
Есть ли у кого-нибудь описание на русском языке по работе с treeview? или работающего примера на vba

Класс внутри класса с доступом к данным первого класса
Есть класс, он содержит в себе функции. Функций этих много и я решил, что было бы удобно их группировать, как-нибудь через структуры или...


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

Или воспользуйтесь поиском по форуму:
50
Ответ Создать тему
Новые блоги и статьи
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru