Wpis z mikrobloga

Teraz to już się #!$%@?łem. Deklaracje dwóch wersje tej samej funkcji w dwóch językach:

function(final Token token)
// Java

function(const Token& token)
// C++

Deklaracja konstruktor klasy Token:

Token(char c)
Wywołanie function z tworzeniem Token w locie:

function('x')
// C++

function(new Token('x'))
// Java #!$%@?!!!

Ktoś mi jeszcze powie, że Java jest mniej upierdliwa od C++?

#programowanie #cpp #java
  • 9
@Ginden: Ja jak chce użyć(czy też sprawdzasz czy jest poprawnie użyta) jakiejś funkcji to zazwyczaj wiem jak wygląda jej deklaracja. I co ona robi. Ty randomowo wrzucasz argumenty do funkcji licząc że się skompiluje i zadziała poprawnie ? :O

@M4lutki: Właśnie ta idiotoodporność ma wady i zalety. Bo zazwyczaj jest łatwiej, szybciej i czytelniej. Ale potem się okazuje że chcesz zrobić czarną magię i masz problem.
Rzutowanie domniemane w C++ jest jest takim "dodatkiem", jak przeciążanie operatorów. Można się tak samo czepiać, że Java tego nie ma, ale argumentacja będzie tak sama jak powyżej już panowie podali.

Java pozwala na implementację klasy abstrakcyjnej w miejscu jej zastosowania - klasa anonimowa. W C++ musisz zadeklarować nową klasę, zdziedziczyć i zaimplementować abstrakcyjną metodę. To co, C++ bardziej upierdliwy?

Jak dla mnie to takie szukanie sobie problemów. @Onoki, nie masz