Udostępnij za pośrednictwem


Konwersje

Obiekty typu danej klasy można konwertować na obiekty innego typu.Polega to na konstruowaniu obiektu typu klasy docelowej typu klasy źródłowego i kopiowanie wynik do obiektu docelowego.Ten proces jest nazywany konwersji przez konstruktora.Obiekty można skonwertować także funkcje konwersji dostarczone przez użytkownika.

Podczas konwersji standardowych (opisane w Konwersji standardowych) nie można całkowicie Konwertuj z danego typu na typ klasy, kompilator można wybrać zdefiniowane przez użytkownika konwersje ukończenie zadania.Oprócz konwersje typu jawne konwersje podjąć jeżeli:

  • Wyrażenia inicjatora nie jest tego samego typu co obiektu, jego zainicjowaniem.

  • Typ argumentu w wywołaniu funkcji niezgodny z typem argumentu określonych w deklaracji funkcji.

  • Typ obiektu, są zwracane przez funkcję nie pasuje zwracany typ określony w deklaracji funkcji.

  • Dwa operandy wyrażenia musi być tego samego typu.

  • Wyrażenie kontrolowanie instrukcji iteracji lub wybór wymaga innego typu niż ten, dostarczone.

Zdefiniowana przez użytkownika konwersja jest stosowane tylko wtedy, gdy jest jednoznaczne; w przeciwnym razie jest generowany jest komunikat o błędzie.Dwuznaczność sprawdza się w punkcie użycia.W związku z tym jeśli nie są używane funkcje, które powodować niejasności, klasa może być wyznaczona z potencjalnych niejasności i generują błędy.Chociaż istnieje wiele sytuacji, w których powstają niejasności, są dwie główne przyczyny niejasności:

  • Typem klasy pochodzi z użycia wielokrotne dziedziczenie i nie jest jasne, z których klasy bazowej, aby wybrać konwersji (zobacz niejednoznaczności).

  • Istnieją operatora konwersji jawnej typu i konstruktora dla tej samej konwersji (zobacz Funkcje konwersji).

Zarówno konwersji przez konstruktora i funkcje konwersji przez konwersji przestrzegać zasad kontroli dostępu, jak opisano w Kontroli dostępu Członkowskie.Kontrola dostępu jest badany tylko po konwersji okazuje się być jednoznaczne.

Aby uzyskać dodatkowe informacje, zobacz Konwersji konstruktory.

Zobacz też

Informacje

Specjalne funkcje składowe (C++)