Chcę przekazać obiekt klasy A (nazwać go) przez odniesienie (w szerokim znaczeniu, tj. Przez A & lub przez A *) do konstruktora innej klasy B. I nie chcę, aby "a" było modyfikowane wewnątrz B ("a" jest tylko do odczytu i jest duże, dlatego chcę je przekazać przez odniesienie). Znam dwóch opcji:Przejście przez opcje odniesienia w C++
1) pass 'a' jak
const A & a_
2) Przełęcz 'a' jak
const A * a_
Wadą wariantu 1 jest to, że mogę błędnie zdać wartość r. Wadą opcji 2 jest to, że mogę omyłkowo przekazać zerowy wskaźnik.
Moje pytania są następujące: 1) Czy mam rację co do wad powyżej? 2) Czy istnieje inny zalecany sposób przekazania "a" przez odniesienie?
Widziałem odpowiedzi w linku poniżej. Ale jestem ciekawy, czy istnieją inne opcje niż to, co jest zamieszczone w tym pytaniu. Are there benefits of passing by pointer over passing by reference in C++?
Jak prawdopodobne jest to, że będzie błędnie przekazać wartość R, i jak poważne będą skutki tego działania będzie? – emlai
Jeśli masz obawy i znasz problemy, potrzebujesz sprawdzenia błędów. Przejdź przez referencję i spróbuj/złap. Jeśli zrobisz to za pomocą wskaźnika, zmodyfikujesz oryginalną instancję swojego obiektu. –
Co to jest wartość rwalna? Czy to nieokreślona równość? Jak lwartość? –