2009-08-08 20 views

Odpowiedz

61

C++ zostało wprowadzone jako nadzbiór C. Struktury zostały przeniesione z C, gdzie semantyka ich członków była jawna. Istnieje wiele kodów C, w tym bibliotek, które również chciały pracować z C++, które używają struktur. Klasy zostały wprowadzone w C++ i aby były zgodne z filozofią OO enkapsulacji, ich członkowie domyślnie są prywatni.

+0

Cóż, prawdę mówiąc, hermetyzacja nie jest absolutnie niezbędna, aby wszyscy członkowie byli prywatni. Dzięki inlineingowi C++, metody dostępu mogą być bardzo tanie, ale w wielu językach OOP, z uwagi na obciążenie wywołaniem funkcji, ludzie mają tendencję do korzystania z dostępu publicznego, ponieważ jest on tańszy. Aby uzyskać dokładniejszą kontrolę, można użyć deklaracji właściwości, jeśli ich język obsługuje. Jednak w kodzie natywnym śledzenie zmian zmiennych jest trudniejsze niż w językach zarządzanych, więc sensowne jest ustawienie atrybutów za pomocą pojedynczego punktu kodu. – progician

1

Prawdopodobnie dla kompatybilności wstecznej ze strukturami C. W ten sposób deklarowane w kodzie C struktury będą działały w ten sam sposób, gdy są używane w kodzie C++.

7

Ponieważ klasa jest zwykłym sposobem na orientację obiektową, co oznacza, że ​​zmienne składowe powinny być prywatne i mieć publicznych akcesorów - jest to dobre do tworzenia low coupling. Z drugiej strony, struktury muszą być zgodne ze strukturami C, które są zawsze publiczne (nie ma pojęcia publicznego i prywatnego w C) i nie używają akcesorów/mutatorów.