Запитання з тегом «operator-overloading»

Перевантаження оператора - це особливість мови програмування, яка дозволяє користувальницьким реалізаціям для операторів залежно від типів операндів. Деякі мови дозволяють визначати нових операторів, а інші дозволяють лише переосмислити існуючі.

7
Які основні правила та ідіоми щодо перевантаження оператора?
Примітка. Відповіді були надані в певному порядку , але оскільки багато користувачів сортують відповіді відповідно до голосів, а не за часом їх отримання, ось індекс відповідей у тому порядку, в якому вони мають найбільше сенсу: Загальний синтаксис перевантаження оператора в C ++ Три основні правила перевантаження оператора в C ++ …

16
Чому Java не пропонує оператору перевантажувати?
Починаючи з C ++ на Java, очевидним без відповіді є питання, чому Java не включала перевантаження оператора? Чи не Complex a, b, c; a = b + c;набагато простіше, ніж Complex a, b, c; a = b.add(c);? Чи є відома причина цього, вагомі аргументи, що не дозволяють оператору перевантажувати? Причина …

10
Симпатичні друковані контейнери C ++ STL
Зверніть увагу на оновлення в кінці цієї публікації. Оновлення: Я створив публічний проект на GitHub для цієї бібліотеки! Я хотів би мати єдиний шаблон, який раз і назавжди піклується про гарне надрукування всіх контейнерів STL через operator<<. У псевдокоді я шукаю щось подібне: template<container C, class T, String delim = …

15
Чи взаємозалежні == і! =?
Я дізнаюся про перевантаження оператора в C ++, і я бачу це ==і !=просто деякі спеціальні функції, які можна налаштувати під визначені користувачем типи. Але я хвилююся, чому потрібні два окремі визначення? Я подумав, що якщо a == bце правда, то a != bавтоматично помилково, і навпаки, а іншої можливості …

8
Як я перевантажую оператор квадратної дужки в C #?
Наприклад, DataGridView дозволяє вам це робити: DataGridView dgv = ...; DataGridViewCell cell = dgv[1,5]; але я не можу знайти документацію щодо оператора індексу / квадратних дужок. Як вони це називають? Де вона реалізована? Може кинути? Як я можу зробити те ж саме на власних заняттях? ETA: Дякую за всі швидкі …

5
Як правильно перевантажувати оператор << для потоку?
Я пишу невелику бібліотеку матриць на C ++ для матричних операцій. Однак мій упорядник скаржиться, де раніше цього не робив. Цей код був залишений на полиці протягом 6 місяців, і між ними я модернізував комп’ютер з debian etch до lenny (g ++ (Debian 4.3.2-1.1) 4.3.2), проте у мене є та …




6
Перевантаження оператора методами розширення C #
Я намагаюся використовувати методи розширення, щоб додати перевантаження оператора до класу C # StringBuilder. Зокрема, з огляду на те StringBuilder sb, що я хотів би sb += "text"стати рівнозначним sb.Append("text"). Ось синтаксис створення методу розширення для StringBuilder: public static class sbExtensions { public static StringBuilder blah(this StringBuilder sb) { return …

5
Як я можу надійно отримати адресу об’єкта, коли оператор & перевантажений?
Розглянемо наступну програму: struct ghost { // ghosts like to pretend that they don't exist ghost* operator&amp;() const volatile { return 0; } }; int main() { ghost clyde; ghost* clydes_address = &amp;clyde; // darn; that's not clyde's address :'( } Як мені отримати clydeадресу? Я шукаю рішення, яке буде …

14
Що робить оператора Scala перевантаження «хорошим», а C ++ - «поганим»?
Перевантаження оператора в C ++ багато хто вважає поганою річчю (tm), і помилкою не повторюватися в нових мовах. Звичайно, це була одна особливість, яка спеціально випала при розробці Java. Тепер, коли я почав читати на Scala, я вважаю, що він дуже схожий на перевантаження оператора (хоча технічно він не має …

9
Чи є насправді причина, чому перевантажені && та || не коротке замикання?
Коротке замикання поведінки операторів &amp;&amp;і ||є дивовижним інструментом для програмістів. Але чому вони втрачають таку поведінку при перевантаженні? Я розумію, що оператори - це лише синтаксичний цукор для функцій, але оператори boolмають таку поведінку, чому його слід обмежувати лише цим типом? Чи є за цим технічні міркування?

5
Перевантаження операторів доступу членів ->,. *
Я розумію , більшість перевантаження операторів, за винятком операторів доступу члена -&gt;, .*, і -&gt;*т.д. Зокрема, що передається цим операторським функціям, а що потрібно повернути? Як функція оператора (наприклад operator-&gt;(...)) знає, до якого члена відноситься? Чи може це знати? Це навіть потрібно знати? Нарешті, чи є якісь міркування щодо суперечності, …

8
Чи повинен оператор << реалізовуватися як друг або як член-функція?
Це в основному питання, чи є "правильний" спосіб реалізації operator&lt;&lt;? Читаючи це, я можу побачити щось подібне: friend bool operator&lt;&lt;(obj const&amp; lhs, obj const&amp; rhs); вважається за краще щось подібне ostream&amp; operator&lt;&lt;(obj const&amp; rhs); Але я не можу зовсім зрозуміти, чому я повинен використовувати те чи інше. Моя особиста справа: …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.