aa
Hugo: C++ przeładowania operatorów
http://pastebin.com/kmfLR4uf
Wiadro operator−(const Wiadro &p2, const Wiadro &p1)
{
Wiadro pp = p1.x −p2.x;
pp = p1.y − p2.y;
return pp;
}
W tej funkcji zaprzyjaźnionej chciałbym operować na obiekty.y oraz obiekty.x , jednak wywala
głupoty konsoli(kompiluje). Gdy stosuje to tylko dla p1.x−p2.x to działa normalnie. Jak
działać na większej liczbie argumentów jak tutaj (x,y) a nie tylko na jednej na operatorach

?
15 lis 18:54
asdf: przeciez ten operator nie moze miec innej ilosci argumentow jak dwa...z lewej i z prawej
strony, po 2) "jednak wywala glupoty konsoli (kompiluje)" − to nie sa glupoty....bo wlasnie
takie "glupoty" musisz nauczyc sie czytac i rozwiazywac
3) "jednak wywala glupoty konsoli (kompiluje)" − i co? mam sobie odpalic program, przygotowac
kod i skompilowac? Odpowiadam: nie chce mi sie....to ty powinienes zadbac o to, zeby ktso
chcial tobie pomoc
20 lis 21:02
jakubs: Myślałem, że ja piszę straszny kod

Wywala głupoty..., co wywala ? Może dlatego, że w konstruktorze, który przyjmuje inta, nie
inicjalizujesz y.
http://pastebin.com/P8yi5kz1
20 lis 22:10
asdf: jakubs, bez urazy...ale prawdopodobnie tak jest

chyba, ze sie uczysz bardzo szybko i po
roku (?) juz piszesz idealnie
20 lis 23:56
Trivial:
> przeciez ten operator nie moze miec innej ilosci argumentow jak dwa...z lewej i z
> prawej strony,
Kolejna osoba pokonana przez C++:
http://ideone.com/Zg9pF2
21 lis 13:08
asdf: OK, wpadłem, ale widzisz w tym jakiś sens? Osobiście jakbym zauwazyl takie cos w kodzie to bym
zrobil blame na pliku i od razu do takiej osoby poszedl i powiedzial, ze tworzy niepotrzebny
balagan w kodzie. Chyba, ze przekonalby mnie po co to zrobil. Jak na razie nie widze w tym
zadnego zastosowania.
21 lis 13:46
Trivial: asdf, tu nie chodzi o sens − napisałeś że jest niemożliwe, a jest możliwe. Czy to ma sens
czy nie − c++ doesn't care.
21 lis 14:33
Trivial:
A przykładowe zastosowanie to zachowanie konsystencji z typami prymitywnymi dla typów
matematycznych (np. macierz).
21 lis 14:50
asdf: Tak, przyznalem sie juz − co do ostatniego Twojego wpisu: "skąd to skopiowałeś? potrafiłbyś to
opisać normalnymi słowami"?
21 lis 15:33
Trivial:
Znikąd nie skopiowałem. Można napisać np. f(+3) to czemu miałoby się nie dać napisać f(+m)
gdzie m jest typu matrix?
21 lis 16:39
asdf: sorry, ale ja nie widze w tym sensu nadal, jest to nieczytelne i wprowadza tylko w
zaklopotanie. Niestety mozliwe.
21 lis 17:08
Trivial: Nieczytelne? Dlaczego niby +3 jest nieczytelne? Tak można było pisać od zawsze.
21 lis 17:10
asdf: Tak, od zawsze można pisać tak nieczytelnie: "+3". Jakbym ja miał posortować zapisy według
"czytelności":
1. +3
2. 3
3. 0+3
4. 100*0 + 3
To zrobiłbym to tak:
2 − wiadomo od początku o co chodzi
3 − też jeszcze wiadomo − do niczego dodaj 3
4 − przekombinowane − staje sie juz mniej czytelne i bez sensu
1 − ukryte zero z przodu − tu bym pomyslał: "wow, ktoś chciał zabłysnąć, ale marny tego skutek
Nie próbuję teraz nikogo atakować, tylko zrozumieć dlaczego w tak przeciążonym operatorze jest
to według Ciebie
OK
21 lis 17:53
Trivial:
Jakie ukryte zero? To jest głównie używane jeśli ktoś chce sobie napisać pod sobą np.:
s.move(+1);
s.move(−1);
i mieć równo. To kosmetyka i nie ma tu żadnych ukrytych zer. Taki przeciążony operator powinien
być w przybliżeniu no−opem.
21 lis 18:02
asdf: Rozumiem po co to dodali, osobiście − w "ostatecznej ostateczności" (bo nigdy nie mów nigdy)
użyłbym takiego przeciążenia i jak wcześniej napisałem − jakbym to zauważył w projekcie to
pierwsze co bym poszedł do osoby, która to napisała i spróbował przekonać, żeby takiego czegoś
nie używać bo dla mnie jest to "niepotrzebne dodawanie do składni czegoś co można zastąpić
czytelniej"

Żeby nie było, w każdym języku jest coś dziwnego, np. C# − dodali dziwny operator "?." którego
nigdy bym nie użył...Mimo tego i tak uważam, że to najlepszy język

Piszę w nim już od 3
lat i nie zamieniłbym go na żaden inny
https://msdn.microsoft.com/en-us/magazine/dn802602.aspx
21 lis 18:12
asdf: po prostu − nigdy nie da sie każdemu dogodzić...mnie się takie przeciążanie nie podoba, a komuś
innemu może być to obojętne / podobać się.
21 lis 18:13
Trivial:
Nie ma czegoś takiego jak najlepszy język.
C# nie nadaje się do wszystkiego. Na przykład systemu real−time w nim raczej nie napiszesz −
tam nie można sobie pozwolić na garbage collector. Tam gdzie chcesz uzyskać najlepszą
wydajność również bardzo ciężko pobić program dobrze napisany w C++.
Jeśli chodzi o same możliwości to C++'owy system typów jest potężniejszy niż ten C#'owy i to
wszystko przy zerowym koszcie. Po kompilacji wszystko znika.

Oczywiście typowe apki
biznesowe to nie jest zbyt dobry fit dla C++.
21 lis 18:36
asdf: jest coś takiego jak własna opinina (co zaznaczyłem) i nadal twierdzę, że jest to najlepszy
język (sic! według mnie).
Może mieć lepszy system typów, być szybszy, ale czy każdemu na tym zależy? Nie.
Może komuś (tak jak mi) bardziej zależy na swobodzie pisania i tym, że nie musze się martwić
pamięcią. Zaznaczyłeś "pobić program DOBRZE napisany w C++". Właśnie...słowo "dobrze" − w
drugą strone to tez moze zadziałać − gorzej jak ktos nieodpowiedzialnie pisze i GC spisze sie
w tym przypadku lepiej.
Wolisz C++, niż C# − OK. Ale wszystko i tak się sprowadza do tego, jakie kto ma potrzeby. To
tak jakbyś chciał kupić sobie samochód. Ktoś Ci powie − wybierz ferrari bo ma dużo koni
mechanicznych, a Tobie bardziej bedzie pasowac jakis tam passat z fajnym wnętrzem − nacisk
kładziesz na komfort jazdy i gdzieś możesz mieć prędkość, bo prawdopodobnie spotkacie się na
następnym korku (nawiązuję tutaj do możliwości kompa − wielu rzeczy nie przeskoczy C++)
Wszystko zależy od targetu dla jakiego piszesz i na czym Ci zależy w kodzeniu
21 lis 18:51
Trivial:
Nigdzie nie napisałem co wolę. Napisałem mniej więcej "use the right tool for the right job".
Z tym dobrze napisanym programem nie chodziło mi o to, że GC jest wolne (bo nie jest), tylko o
to że kod będzie po prostu szybszy. Ciężko taki kod napisać, ale chodzi o to że C++ sprawia że
jest to możliwe, podczas gdy większość języków nie pozostawia wyboru.
21 lis 19:01
kyrtap: a Huga jak nie ma tak nie ma
21 lis 19:03
Dziadek Mróz:
Huga nie ma bo problem rozwiązaliśmy na samym początku ale zapomnieliśmy o tym powiadomić
społeczność

21 lis 19:05
kyrtap:
21 lis 19:18
jakubs: asdf wiem, że mój kod jest słaby, ale myślałem że gorzej pisać się nie da, ale
Hugo
mnie trochę podbudował
21 lis 20:49
asdf: Trivial, tutaj nie napisałeś, że wolisz C++ od C#, jednak z poprzednich rozmów pamietam jak nie
raz narzekales na C# i jego dziwną składnie (spoko − nie każdy musi to lubić), jeśli zmieniłeś
zdanie to sorry.
Po tym co napisales, mogles wywnioskowac, ze sadzę: "C++ jest szybszy bo tam nie ma GC".
Wytłumaczę się:
Nie uważam, ze C++ jest szybszy od C# bo nie ma "wbudowanego" GC.
W C# prócz GC można używać "systemowych" klas (np. Marshall), chciałem jedynie nawiązać do
tego, że: nie każdemu zależy na tym, co innej osobie − dla mnie może coś działać "ciut"
wolniej, a zrobię to X razy szybciej, stracąc X razy mniej czasu na debugowanie, pisanie
testów jednostkowych + przy rozwijaniu dużych projektów ważne są narzędzia z jakich się
korzysta − C# ma do tego Visual Studio i jak zna się go w miare dobrze to uwierz mi − nie chce
się przesiadać na nic innego (UMLe, frameworki ORM, testy jednostkowe + mockowanie,
debugowanie, intellisense (jakiego nie ma C++) + kilka ciekawych rozszerzeń, np. VIM to WEDŁUG
MNIE najlepsze narzędzie z jakim programista może się teraz spotkać)
22 lis 01:31