C ++ jawne słowo kluczowe

C ++ jawne słowo kluczowe
W C ++ używamy nawiasów i klamr. Ten rodzaj inicjalizacji jest znany jako jawna inicjalizacja. Jawne jest wykorzystywane przed konstruktorem, który jest zadeklarowany, aby konstruktor nie wymagał słowa kluczowego „jawnego” do wykonania niejawnej konwersji. Definiuje się, aby uciec od niektórych ukrytych konwersji, jeśli klasa utrzymuje jakikolwiek obiekt, więc ma jeden konstruktor argumentów.

Kompilatory ogólnie rozważają ukryte konwersje lub konstruktory konwersji. Może to spowodować niepożądany wynik. Aby zignorować takie konsekwencje, używamy słowa „jawne” przed konstruktorem. Ogólnie rzecz biorąc, jawne konstruktory są zadeklarowane, gdy konstruktory niejawne nie są dostępne, a jawne konstruktory zawierają jeden lub więcej parametrów. Kiedy próbujemy uruchomić kod, który używa specyfikatora „jawny” w konstruktorze, znajdujemy błąd kompilacji.

W tym artykule opisano wyraźne słowa kluczowe wykorzystywane dla konstruktorów, które nie mogą wykorzystać niejawnego konstruktora. Używamy oprogramowania „Dev C ++” do wykonywania kodów.

Konstruktor konwersji jawnej:

W C ++ konstruktory są wykorzystywane przede wszystkim do inicjalizacji lub tworzenia obiektów dla klas dostarczanych przez kompilator domyślnie. Możemy użyć tego typu konstruktora do wyraźnych konwersji. To słowo kluczowe jest opcjonalne, w którym przekazujemy tylko jeden argument na raz. Ten konstruktor można wykorzystać w stereotypach:

#włączać
za pomocą przestrzeni nazw Std;
Klasa X
Char Varible_a;
publiczny:
X()
X (char a): zmienna_a (a) ;
void print () std :: cout << "Value is "<< variable_a <;
void disp (x i)

I.wydrukować();

int main ()

X obj1 („m”);
X obj2 = 'n';
Cout<<"When we call constructor normally, this is the value :" << endl;
disp (obj1);
Cout<<"\n" <Cout<<"We get this value after the compiler implicitly changes it to character type from X type is : " << endl;
disp (obj2);
powrót 0;

W tym programie najpierw definiujemy klasę „x”, która deklaruje zmienną nazywaną „zmienną_a” typu znaku. Następnie produkujemy domyślny konstruktor o zerowym parametrach i konstruktor pojedynczego argumentu z inną klasą, która ma „zmienną_a” typu znaku. Wartość utworzona, a następnie przekazana jako argument funkcji jest wydrukowana. Tutaj musimy po prostu przekazać dowolną wartość typu, ale w funkcji Main () używamy pierwszego obiektu o nazwie „OBJ1” klasy x. Następnie przekazujemy „m” jako argument funkcji disp (). Zatem wartość jest drukowana, gdy konstruktor jest zwykle wywoływany.

Załóżmy, że utworzymy drugi obiekt „OBJ2”, klasy X, a funkcja disp () jest przekazywana. Następnie przejdziemy argument klasy „x”. Stąd, jeśli wywołamy funkcję disp () i przypisujemy alfabet „n” znaku typu do obiektu „obj2”, kompilator pośrednio zmienia tę zmienną typu „x” na zmienną typu typu. Zapewnia wyjście w wartości znaku. Używamy jednego argumentu i umieszczamy słowo kluczowe „jawne” w konstruktorze, aby uniknąć tego za pomocą domyślnego połączenia:

Porównaj dwie liczby złożone:

Wykorzystujemy słowo kluczowe „jawne” dla zdefiniowanego konstruktora, aby wskazać, że konstruktor jest wyraźnie wywoływany za pomocą kręconych aparatów ortodontycznych i kwadratowych nawiasów. Kompilator rzuca błąd, gdy użytkownik próbuje wywołać jawny konstruktor za pomocą operatora przypisania „=”.
W tym kodzie tworzymy klasę „Complex_number”. Następnie tworzymy zmienne podwójnego typu danych i stawiamy te zmienne prywatne. Jeśli klasa zawiera konstruktor, w którym przekazujemy tylko jeden argument, ten konstruktor będzie konstruktorem konwersji. Możemy zignorować te ukryte konwersje, ponieważ mogą one dać nam nieoczekiwane wyjścia. Dlatego jawnie tworzymy konstruktor za pomocą słowa kluczowego „jawne”:

#włączać
za pomocą przestrzeni nazw Std;
Klasa XYZ

prywatny:
int b;
int c;
publiczny:
xyz (int u = 0, int v = 0): b (u), c (v)
Bool Operator == (XYZ E)
powrót (b == e.B && c == e.C)? fałsz PRAWDA;

;
int main ()

XYZ OBJ (12, 23);
if (obj == 12)
Cout << "matched";
w przeciwnym razie
Cout << "Not matched";
powrót 0;

W treści głównej funkcji deklarujemy wartości do obiektu klasy. Stosujemy warunek IF-ELSE, aby porównać dwie liczby złożone. Tutaj sprawdzamy, czy podana wartość przekazana jako argument jest równa wartościom obiektu. Wyjście poprzedniego kodu jest następujące:

Korzystanie z dwóch argumentów:

Jeśli nie możemy kontrolować konwersji niejawnej, musimy wymagać konstruktora z wyraźnym słowem kluczowym dla konstruktora w stwierdzeniu klasy. Nie możemy użyć tego słowa kluczowego w domyślnym konstruktorze. Ogólnie rzecz biorąc, stwierdzenie słowa kluczowego „jawne” jako identyfikator funkcji dla konstruktora o jednym lub więcej parametrach w deklaracji klasowej jest wykorzystywane do ochrony klasy przed niepotrzebnymi konwersjami typu. W przeciwnym razie bez tego słowa kluczowego może to być konstruktor konwersji:

#włączać
za pomocą przestrzeni nazw Std;
klasa kompleks_number

prywatny:
podwójne rnum;
podwójne inum;
publiczny:
jawny kompleks_number (podwójny r = 0.0, Double I = 0.0): rnum (r), inum (i)
Bool Operator == (Complex_Number ABC)
return (rnum == ABC.rnum && inum == ABC.inum)? prawda fałsz;

;
int main ()

Complex_number Comp (9.0, 4.0);
if (comp == (complex_number) 7.0)
Cout << "Same";
w przeciwnym razie
Cout << "Not Same";
powrót 0;

W tym przypadku tworzymy klasę o nazwie „XYZ”. W konstruktorze przekazujemy dwa parametry. Jest to ogólnie najlepszy sposób na jawne użycie jednego konstruktora argumentów. Ponieważ może to być mylące, jeśli wywołamy dwa lub więcej argumentów dla konstruktorów w głównej funkcji. Ponownie, tutaj konstruktor jest domyślnie zadeklarowany przez kompilatora. Logicznie, aby uniknąć niepotrzebnej implementacji programu, która może prowadzić do wyjścia, nie jest tak łatwe do konwersji typu, więc użyj słowa kluczowego „jawne” w C ++ dla konstruktora:

Wniosek:

W tym artykule ustalamy, że konkretne słowo kluczowe „jawne” jest zwykle wykorzystywane dla konstruktorów używanych do tworzenia obiektów klasowych w stwierdzeniu klasy. Zauważyliśmy również, że słowo kluczowe jest najbardziej skuteczne dla konstruktorów. Jednocześnie musimy trzymać się z dala od ukrytych połączeń za pośrednictwem kompilatorów, które zwykle tworzą konstruktory jako zmieniające się konstruktory. Zmienia zmienne z jednego rodzaju na inny, który nie jest dokładny. To wyjątkowy sposób na ciągłe korzystanie z tego słowa kluczowego w takich przypadkach. Mamy nadzieję, że ten artykuł jest pomocny. Sprawdź inne artykuły w Linux, aby uzyskać więcej wskazówek i informacji.