C++/Różnice między C a C++: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Lethern (dyskusja | edycje)
m Wycofano edycje użytkownika Mariusz16 (dyskusja). Autor przywróconej wersji to Adam majewski.
Lethern (dyskusja | edycje)
→‎Funkcje: poprawka czytelności
Linia 54:
 
=== Funkcje ===
W języku C pusta lista argumentów: <tt>funkcja()</tt> oznacza, że prototyp nie precyzuje argumentów przyjmowanych przez funkcję, natomiast deklaracja '''<tt>funkcja(void)'''</tt> oznacza, że funkcja nie przyjmuje argumentów. W języku C++ puste nawiasy są tożsame z (void).
 
W języku C++ możnapuste jednaknawiasy uzyskać tentożsame samz (void) - nie przyjmowanie argumentów, natomiast efekt taki, co puste nawiasy w C można uzyskać poprzez '''(...)''', czyli [[Programowanie:C:Funkcje#Zmienna liczba parametrów|zmienną listę argumentów]], ale bez określania argumentów początkowych (to z kolei nie jest dostępne w języku C).
W języku C pusta lista argumentów: () oznacza, że prototyp nie precyzuje argumentów przyjmowanych przez funkcję, natomiast deklaracja '''funkcja(void)''' oznacza, że funkcja nie przyjmuje argumentów. W języku C++ puste nawiasy są tożsame z (void).
 
W języku C++ można jednak uzyskać ten sam efekt, co puste nawiasy w C poprzez '''(...)''', czyli [[Programowanie:C:Funkcje#Zmienna liczba parametrów|zmienną listę argumentów]], ale bez określania argumentów początkowych (to z kolei nie jest dostępne w języku C).
 
Należy zwrócić szczególną uwagę, że jest to w istocie dość uciążliwe ułatwienie, że () jest tożsame z (void). W konsekwencji bowiem o ile wyrażenie '''(a)''' (gdzie 'a' jest jakąś zmienną) można odróżnić od nazwy typu w nawiasach, np. '''(int)''', to w przypadku () jest to nie do odróżnienia. Stąd mała niekonsekwencja w deklarowaniu obiektów wraz z argumentami konstruktora: