Pytania otagowane jako operator-overloading

Przeciążanie operatorów to funkcja języka programowania, która umożliwia niestandardowe implementacje dla operatorów w zależności od typów operandów. Niektóre języki pozwalają na definiowanie nowych operatorów, podczas gdy inne pozwalają tylko na przedefiniowanie istniejących.

7
Jakie są podstawowe zasady i idiomy dotyczące przeciążania operatora?
Uwaga: odpowiedzi udzielono w określonej kolejności , ale ponieważ wielu użytkowników sortuje odpowiedzi według głosów, a nie czasu, w którym zostały udzielone, oto indeks odpowiedzi w kolejności, w której mają one największy sens: Ogólna składnia przeciążenia operatora w C ++ Trzy podstawowe zasady przeciążania operatora w C ++ Decyzja między …

16
Dlaczego Java nie oferuje przeciążania operatora?
Przechodząc od C ++ do Java, oczywistym pytaniem bez odpowiedzi jest to, dlaczego Java nie zawierała przeciążenia operatora? Czy to nie Complex a, b, c; a = b + c;jest prostsze niż Complex a, b, c; a = b.add(c);? Czy jest znany znany powód, aby nie dopuszczać do przeciążenia operatora? …

10
Ładne drukowane pojemniki C ++ STL
Zwróć uwagę na aktualizacje na końcu tego postu. Aktualizacja: Utworzyłem projekt publiczny na GitHub dla tej biblioteki! Chciałbym mieć jeden szablon, który raz na zawsze zajmuje się ładnym drukowaniem wszystkich pojemników STL operator<<. W pseudokodzie szukam czegoś takiego: template<container C, class T, String delim = ", ", String open = …

15
Czy == i! = Są od siebie zależne?
Uczę się o przeciążenia operatora w C ++, i widzę, że ==i !=są po prostu pewne specjalne funkcje, które mogą być dostosowane do typów zdefiniowanych przez użytkownika. Martwię się jednak, dlaczego potrzebne są dwie osobne definicje? Myślałem, że jeśli a == bto prawda, a != bto automatycznie jest fałszem i …






6
Przeciążanie operatorów za pomocą metod rozszerzenia języka C #
Próbuję użyć metod rozszerzających, aby dodać przeciążenie operatora do StringBuilderklasy C # . Konkretnie biorąc StringBuilder sb, chciałbym sb += "text"stać się odpowiednikiem sb.Append("text"). Oto składnia tworzenia metody rozszerzenia dla StringBuilder: public static class sbExtensions { public static StringBuilder blah(this StringBuilder sb) { return sb; } } Pomyślnie dodaje blahmetodę …



9
Czy rzeczywiście istnieje powód, dla którego są przeciążone && i || nie zwarcie?
Krótkie zachowanie operatorów &&i ||jest niesamowitym narzędziem dla programistów. Ale dlaczego tracą to zachowanie, gdy są przeciążone? Rozumiem, że operatory są jedynie cukrem syntaktycznym dla funkcji, ale operatory dla boolmają takie zachowanie, dlaczego miałoby być ograniczone do tego jednego typu? Czy jest za tym jakieś techniczne uzasadnienie?

5
Przeciążanie operatorów dostępu do członków ->,. *
Rozumiem najwięcej przeciążanie operatora, z wyjątkiem operatorów dostępowych członkiem ->, .*, ->*itd. W szczególności, co jest przekazywane do tych funkcji operatora, a co powinno zostać zwrócone? W jaki sposób operator funkcjonuje (np. operator->(...)) Wie, do którego elementu członkowskiego się odwołuje? Czy to może wiedzieć? Czy to w ogóle musi wiedzieć? …

8
Czy operator << powinien być zaimplementowany jako przyjaciel czy jako funkcja członkowska?
To jest w zasadzie pytanie, czy istnieje „właściwy” sposób wdrożenia operator&lt;&lt;? Czytając to widzę, że coś takiego: friend bool operator&lt;&lt;(obj const&amp; lhs, obj const&amp; rhs); jest lepszy od czegoś takiego jak ostream&amp; operator&lt;&lt;(obj const&amp; rhs); Ale nie do końca rozumiem, dlaczego powinienem używać jednego lub drugiego. Mój osobisty przypadek to: …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.