Słyszałem, że używanie w kodzie using namespace std jest złą praktyką. Zamiast tego powinno się używać np std::cout i std::cin.
Proszę o wyjaśnienie dlaczego tak jest. Podejrzewam, że chodzi o konflikty nazw, ale czy są jeszcze jakieś wady, np kwestie wydajności?
Temat ten nie jest związany z wydajnością. Tak jak podejrzewasz, chodzi o konflikty nazw. Załóżmy że używasz w projekcie dwóch bibliotek LibA oraz LibB. Używasz też poniższego kodu.
using namespace lib_a
using namespace lib_b
Powiedzmy, że biblioteka LibA posiada metodę method_1, a biblioteka LIbB zawiera method_2. Wszystko działa, nie ma żadnych problemów. Jednak może się okazać, że w pewnym momencie zaktualizujesz LIbA i po aktualizacji zawiera ona metodę method_2, która jednak jest zupełnie czym innym niż method_2 z LibB. W takiej sytuacji, spotkasz się z problemami, a przywrócenie poprawnego działania kodu, może zająć sporo czasu.
Jeśli nie użyjesz using namespace, tylko będziesz korzystać z lib_a::method_1 i lib_b::method_2, to dodanie method_2 do libA, nie będzie miało wpływu na wywołania lib_b::method_2 i nie przysporzy Ci niepotrzebnych problemów.
Zaloguj się, aby odpowiedzieć
Korzystając z Kodologii, przyjmujesz do wiadomości, że rozwijamy platformę wykorzystując cookies i pokrewne technologie. Dowiedz się więcejSchowaj