|
7 / 7 / 3
Регистрация: 17.04.2014
Сообщений: 156
|
||||||
Как перегрузить методы, чтобы получились аналоги get set из C#12.10.2015, 22:15. Показов 6800. Ответов 75
Метки нет (Все метки)
Как можно перегрузить методы, что бы получился аналог get set из C#. Т.е. что то такое:
0
|
||||||
| 12.10.2015, 22:15 | |
|
Ответы с готовыми решениями:
75
Как сделать, чтобы из числа, допустим, 0,040005000 после 5 получились звёздочки Std::set с кастомным классом, как правильно перегрузить оператор < ? Как перегрузить методы Equals() и GetHashCode(), для сравнения свойств объектов? |
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 12.10.2015, 23:33 | |
|
0
|
|
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||||
| 12.10.2015, 23:33 | |||||||
1
|
|||||||
|
7 / 7 / 3
Регистрация: 17.04.2014
Сообщений: 156
|
|||||||
| 12.10.2015, 23:33 [ТС] | |||||||
|
Например у меня есть класс с несколькими переменными:
0
|
|||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 12.10.2015, 23:38 | |
|
0
|
|
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 12.10.2015, 23:43 | ||
|
0
|
||
|
7 / 7 / 3
Регистрация: 17.04.2014
Сообщений: 156
|
||||||||||||||||
| 12.10.2015, 23:52 [ТС] | ||||||||||||||||
|
Пока что вот это кажется самым близким к ответу:
0
|
||||||||||||||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 12.10.2015, 23:55 | ||
|
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 13.10.2015, 00:00 | |||
|
другое дело, что они просто не востребованы. поддерживаются ещё с незапамятных времен.
0
|
|||
|
7 / 7 / 3
Регистрация: 17.04.2014
Сообщений: 156
|
|||
| 13.10.2015, 00:01 [ТС] | |||
|
0
|
|||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 13.10.2015, 00:13 | |||
|
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
| 13.10.2015, 00:28 | ||||||
|
1. нет. не живут. 2. проперти там нафиг не упали. дело в том, что они не дают ровным счетом никакого профита в сравнении с самыми обычными геттерами/сеттерами. в них просто нет смысла. либо вы опять начали тупить. крестовых указателей на функцию-член объекта не существует в природе. их умеют все компиляторы ещё с бородатых времен. и не имеет никакого отношения ни к указателям на функцию-член, ни к шаблонам. в общем, вы опять начинаете нести бред.
0
|
||||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||
| 13.10.2015, 00:45 | |||||
|
Добавлено через 5 минут Второй профит - управление доступом к полям на чтение запись. Read only поля к примеру, без излишнего в таком случае вызова геттера. Ну и то без чего не обойдется визувльное проектирование в принципе - эти таблички подстановки записываются компилятором в RTTI и используются инспектором объектов для визуального редактирования. Добавлено через 3 минуты
0
|
|||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||||||||||
| 13.10.2015, 00:57 | |||||||||||||||||
|
потому что правила языка. именно поэтому, не существует указателей-на-функцию-член, без указания класса, к которым относятся функции-члены. не путайте понятие "указатель на функцию-член" и "делегат". ваш returntype (__closure *Proc)(arglist); только выглядит как указатель. на самом деле это - делегат. довольно таки жалкий по своим возможностям. но все таки, это - делегат, а не member-function-pointer. там под капотом целая механика по связыванию объекта с указателем-на-функцию-член. на языке с++ существует стандартный делегат: std::function, который предоставляет богатые возможности по части любых связок как для свободных функций, так и для функций-членов, и для лямбд, и для любых других функторов. Добавлено через 7 минут и привычнее. в любой цивилизованной идешке можно вбить:
уберите префиксы "set"/"get" , и получите зоопарк имен. и это плохо для читабельности. выглядит как доступ к обычному полю класса, но на самом деле под капотом те же самые сеттеры/геттеры. здесь нет выигрыша в эффективности. с точки зрения оптимизации:
в обоих случаях все прекрасно inline. и нет никаких лишних вызовов. но формошлепству это как то так особе не помешало. ну-ну.
0
|
|||||||||||||||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 13.10.2015, 00:59 | |||
|
У Бъерна явно с ООП всегда туго было. А то бы сразу понял что биндинг чего либо к делегату избыточен, все что ему передается должен передавать вызывающий, а весь этот шаблонно-лямбдовый синтаксис опять же тоже только ухудшает читабельность и ведет к ошибкам. А вот указатели которые называются указателем на члены (с указанием типа класса) действительно не востребованы. За 20 лет которые С++ колупаю ни разу не встречал чтобы где то применялись. Добавлено через 1 минуту
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 13.10.2015, 01:00 | |||
|
не взирая на тот факт, что какой нибудь qt и без всякой рефлексии формошлепит, только в путь.
0
|
|||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||||||
| 13.10.2015, 01:12 | ||||||||
Добавлено через 5 минут
0
|
||||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||||||
| 13.10.2015, 01:15 | |||||||||||||
|
во времена доса его ещё не существовало. std::function вошел в стандарт начиная лишь с++11. std::function и есть делегат. он умеет цеплять любые функциональные объекты: функции, функции-члены, лямбды, функторы. ему пофигу анонимное оно там, или нет. может цеплять как по значению, так и по ссылкам. вы сами поняли, что за бред написали, и как это коррелирует с реальным положением дел? или лямбды? что именно в следующей строке вам трудно прочитать?
использует их у себя под капотом, например. Добавлено через 1 минуту так вы покажите пример рантайм-рефлексии? или это так, пустые слова?
0
|
|||||||||||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||||||||||||||||||||||||
| 13.10.2015, 07:04 | ||||||||||||||||||||||||||
|
Добавлено через 2 минуты вызов ассемблируется на прямую. Добавлено через 2 минуты Добавлено через 5 минут Добавлено через 19 минут А передача указателя именно на метод требуется тогда когда класс-подписчик неизвестен вызывающему классу, т.е на каждом шагу. А что касается правила языка, то правила алгоритмического языка растут из потребностей программистов. Если стандарт отстал от жизни лет на 20 то это проблемы комитета и тех производителей компиляторов которые тупо следуют стандарту. Никакие темплейты и стандартизация бибилиотек в дальнейшем развитии языка не помогут, если игнорировать эффективные и насущные потребности в расширении синтаксисиа. Добавлено через 16 минут А то не комитет по стандартизации получается а отдел сбыта фирмы Dinkumware Добавлено через 14 минут Добавлено через 11 минут Причина в принципе понятна. Но не понятно что они еще пытаются выжать из такого вспомогательного средства как шаблоны. Шаблоны нельзя ставить во главу угла так как компайл-тайм полиморфизм никогда не заменит ран-тайм полиморфизм. Поэтому основой должно быть ООП, а соответсвенно устранение в стандарте недоделок в плане синтаксиса свойств и делегатов и стандартизации рефлекшина, а шаблоны - вспомогательное средство. Но при таком подходе Dinkumware в трубу вылетит. Добавлено через 24 минуты Добавлено через 5 минут Пример:
Добавлено через 1 час 10 минут Obj.Value++; чем Obj.SetValue(Obj.GetValue()+1); По этому эффективность в скорости набора кода и читабельности алгоритма налицо. Мне деньги платят за безошибочно работающий функционал. А вам наверное за количество символов в коде? Добавлено через 25 минут
0
|
||||||||||||||||||||||||||
| 13.10.2015, 07:04 | |
|
получить все комбинации по парам x y, чтобы получились следующие массивы Из каждого предложения удалить знаки препинания чтобы получились лексемы Как перегрузить оператор = , чтобы ф-ция была дружественной Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|