W C++, dlaczego prywatność jest domyślną widocznością dla członków klas, ale publiczna dla struktur?domyślna widoczność członków/członków klasy C++
Odpowiedz
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.
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++.
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.
- 1. Wewnętrzna widoczność członkiem klasy
- 2. Klasy ES6 Wartość domyślna
- 3. celem-c domyślna metoda init dla klasy?
- 4. C# Domyślna rozdzielczość zakresu
- 5. Wartość domyślna dla klasy zdefiniowanej przez użytkownika w C#
- 6. Jaka jest wartość domyślna dla członków klasy C++?
- 7. C++ Atomics i widoczność cross-gwint
- 8. Domyślna nazwa z OpenFileDialog C#?
- 9. combobox wartość domyślna winforms C#
- 10. C# WPF ProgressBar "domyślna" wysokość
- 11. Wykorzystanie Domyślna wartość enum C++
- 12. CRTP i rodzaj widoczność
- 13. Java Widoczność Pamięci Konstruktorów
- 14. Dziedziczenie i widoczność - PHP
- 15. jak zaimplementować selektywną widoczność właściwości w języku C#?
- 16. Domyślna domyślna kreska działania
- 17. Znajomość/widoczność pakietu PHP:
- 18. Widoczność wyświetlania w Argo UML
- 19. GCC -flto zmieniające widoczność symbolu
- 20. Wartość domyślna dla bool w C#
- 21. C#, domyślna wartość parametru dla IntPtr
- 22. Parametr powershell wartość domyślna (cmdlet C#)
- 23. Java wewnętrzna klasa widoczność puzzle
- 24. Widoczność w podpakietach
- 25. ImageView widoczność Błąd czasowy
- 26. SupportMapFragment - widoczność fragmentu mapy
- 27. widoczność: widoczny/ukryty div
- 28. przełącz widoczność div
- 29. Jak ograniczyć widoczność przedmiotów?
- 30. Jak animować "widoczność: ukryta"?
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