logo

Írja be a Casting-et C++ nyelven

Ez a rész a változók típus-öntését tárgyalja a C++ programozási nyelvben. A típusöntés egy programban az egyik adattípus másikká konvertálására utal. A Typecasting kétféleképpen történhet: automatikusan a fordító által és manuálisan a programozó vagy felhasználó által. A Type Casting más néven típuskonverzió.

Írja be a Casting szöveget C++ nyelven

Tegyük fel például, hogy az adott adat egész típusú, és lebegő típusra szeretnénk konvertálni. Tehát manuálisan kell átöntnünk az int adatokat a float típusba, és ezt a fajta öntést C++-ban Type Castingnak hívják.

 int num = 5; float x; x = float(num); x = 5.0 

2ndpélda:

 float num = 5.25; int x; x = int(num); Output: 5 

A Type Casting két típusra oszlik: implicit konverzióra vagy implicit típuscastingra és explicit típuskonverzióra vagy explicit típusú öntésre.

Implicit Type Casting vagy Implicit Type Conversion

  • Automatikus típusú öntés néven ismert.
  • Automatikusan konvertált egyik adattípusról a másikra külső beavatkozás, például programozó vagy felhasználó nélkül. Ez azt jelenti, hogy a fordító automatikusan konvertálja az egyik adattípust egy másikra.
  • Minden adattípus automatikusan frissül a legnagyobb típusra, információvesztés nélkül.
  • Csak akkor alkalmazható egy programban, ha mindkét változó kompatibilis egymással.
 char - sort int -> int -> unsigned int -> long int -> float -> double -> long double, etc. 

Megjegyzés: Az Implicit Type Castingot alacsonytól a magasabb adattípusig kell elvégezni. Ellenkező esetben ez befolyásolja az alapvető adattípust, amely elveszítheti a pontosságot vagy az adatokat, és a fordító figyelmeztetést jeleníthet meg.

Program az implicit típusú öntvény használatához C++ nyelven

java részstring metódus

Hozzunk létre egy példát, amely bemutatja az egyik változó egy másikba öntését a C++ implicit típusú öntésével.

 #include using namespace std; int main () { short x = 200; int y; y = x; cout << ' Implicit Type Casting ' << endl; cout << ' The value of x: ' << x << endl; cout << ' The value of y: ' << y << endl; int num = 20; char ch = 'a'; int res = 20 + 'a'; cout << ' Type casting char to int data type ('a' to 20): ' << res << endl; float val = num + 'A'; cout << ' Type casting from int data to float type: ' << val << endl; return 0; } 

Kimenet:

 Implicit Type Casting The value of x: 200 The value of y: 200 Type casting char to int data type ('a' to 20): 117 Type casting from int data to float type: 85 

A fenti programban deklaráltunk egy rövid adattípusú x változót 200 és egy egész változót y. Ezt követően x értéket rendelünk az y-hoz, majd a fordító automatikusan konvertálja az x rövid adatértéket y-re, ami y 200-at ad vissza.

A következő kifejezésekben deklaráltuk, hogy egy int típusú, num változó 20, a ch karakter típusú változó pedig 'a', ami egy 97-es egész értéknek felel meg. Ezután hozzáadjuk ezt a két változót az implicit konverzió végrehajtásához, amely visszaadja a kifejezés eredményét: 117.

Hasonlóképpen, a harmadik kifejezésben hozzáadjuk a num egész szám változót 20, a ch karakterváltozót pedig 65, majd az eredményt hozzárendeljük a val lebegő változóhoz. Így a kifejezés eredményét a fordító automatikusan float típusúvá konvertálja.

Explicit Type Casting vagy Explicit Type Conversion

  • Más néven kézi típusú öntés programban.
  • A programozó vagy a felhasználó manuálisan adja át az egyik adattípusról a másikra a programban. Ez azt jelenti, hogy a felhasználó könnyedén átküldheti az egyik adatot a másikra a program követelményei szerint.
  • Nem szükséges ellenőrizni a változók kompatibilitását.
  • Ebben az castingban egy programban frissíthetjük vagy visszaminősíthetjük az egyik változó adattípusát egy másikra.
  • A cast () operátort használja a változó típusának megváltoztatására.

Az explicit típusú öntvény szintaxisa

 (type) expression; 

típus: A felhasználó által definiált adatokat képviseli, amelyek átalakítják az adott kifejezést.

ascii tábla java

kifejezés: Azt a konstans értéket, változót vagy kifejezést jelöli, amelynek adattípusa konvertálva van.

Például van egy lebegő mutatószámunk 4,534, és egy egész szám konvertálásához az alábbi utasítást kell megadni:

 int num; num = (int) 4.534; // cast into int data type cout << num; 

A fenti utasítások végrehajtásakor a lebegőpontos érték egész adattípusba kerül a cast () operátor használatával. A lebegőérték pedig egy egész számhoz van rendelve, amely csonkolja a decimális részt, és csak 4-et jelenít meg egész értékként.

Program, amely bemutatja az explicit típusú öntvény használatát C++ nyelven

Hozzunk létre egy egyszerű programot, amellyel az egyik típusú változót egy másik típusba önthetjük a C++ programozási nyelv explicit típusú öntésével.

 #include using namespace std; int main () { // declaration of the variables int a, b; float res; a = 21; b = 5; cout << ' Implicit Type Casting: ' << endl; cout << ' Result: ' << a / b << endl; // it loses some information cout << ' 
 Explicit Type Casting: ' << endl; // use cast () operator to convert int data to float res = (float) 21 / 5; cout << ' The value of float variable (res): ' << res << endl; return 0; } 

Kimenet:

 Implicit Type Casting: Result: 4 Explicit Type Casting: The value of float variable (res): 4.2 

A fenti programban két egész változót veszünk, a és b, amelyek értéke 21 és 2. Ezután osztjuk el a-t b-vel (21/2), ami 4 int típusú értéket ad vissza.

A második kifejezésben egy lebegő típusú res változót deklarálunk, amely az explicit típusú cast metódusban a cast operátor használatával adatvesztés nélkül tárolja a és b eredményeit.

Program dupla adatok int és float típusba öntésére a cast operátor segítségével

Tekintsünk egy példát a téglalap területének kiszámítására úgy, hogy dupla adatokat öntünk float és int típusba C++ programozásban.

 #include using namespace std; int main () { // declaration of the variables double l, b; int area; // convert double data type to int type cout << ' The length of the rectangle is: ' <> l; cout << ' The breadth of the rectangle is: ' <> b; area = (int) l * b; // cast into int type cout << ' The area of the rectangle is: ' << area << endl; float res; // convert double data type to float type cout << ' 
 
 The length of the rectangle is: ' << l << endl; cout << ' The breadth of the rectangle is: ' << b << endl; res = (float) l * b; // cast into float type cout << ' The area of the rectangle is: ' << res; return 0; } 

Kimenet:

 The length of the rectangle is: 57.3456 The breadth of the rectangle is: 12.9874 The area of the rectangle is: 740 The length of the rectangle is: 57.3456 The breadth of the rectangle is: 12.9874 The area of the rectangle is: 744.77 

A Type Casting néhány különböző típusa

A type castnál van egy cast operátor, amely egy adattípust egy másik adattípussá alakít át a program igényei szerint. A C++-nak négy különböző típusú cast operátora van:

  1. Static_cast
  2. dynamic_cast
  3. const_cast
  4. reinterpret_cast

Statikus szereposztás:

junit tesztesetek

A static_cast egy egyszerű fordítási idő, amely átalakítja vagy átküldi az egyik adattípust egy másikra. Ez azt jelenti, hogy nem ellenőrzi az adattípust futás közben, hogy az elvégzett öntvény érvényes-e vagy sem. Így a programozó vagy a felhasználó felelős azért, hogy az átalakítás biztonságos és érvényes legyen.

A static_cast eléggé képes arra, hogy végrehajtsa az implicit cast által végrehajtott összes konverziót. És elvégzi az egymáshoz kapcsolódó osztályok mutatói közötti konverziókat is (upcast - > származtatott osztályból alaposztályba vagy downcast - > alapból származtatott osztályba).

A statikus szereposztás szintaxisa

 static_cast (expression); 

Program a Static Cast használatának bemutatására

Hozzunk létre egy egyszerű példát a típusú öntés statikus öntésének használatára a C++ programozásban.

 #include using namespace std; int main () { // declare a variable double l; l = 2.5 * 3.5 * 4.5; int tot; cout << ' Before using the static cast:' << endl; cout << ' The value of l = ' << l << endl; // use the static_cast to convert the data type tot = static_cast (l); cout << ' After using the static cast: ' << endl; cout << ' The value of tot = ' << tot << endl; return 0; } 

Kimenet:

 Before using the static cast: The value of l = 39.375 After using the static cast: The value of tot = 39 

Dinamikus Cast

A dynamic_cast egy futásidejű cast operátor, amellyel az egyik típusú változót egy másikra konvertálják csak osztálymutatókon és hivatkozásokon. Ez azt jelenti, hogy futási időben ellenőrzi a változók érvényes öntését, és ha az öntés sikertelen, akkor NULL értéket ad vissza. A dinamikus öntés az RTTI (Runtime Type Identification) mechanizmuson alapul.

Program, amely bemutatja a Dynamic Cast használatát C++ nyelven

Készítsünk egy egyszerű programot a dynamic_cast végrehajtására C++ programozási nyelven.

 #include using namespace std; class parent { public: virtual void print() { } }; class derived: public parent { }; int main () { // create an object ptr parent *ptr = new derived; // use the dynamic cast to convert class data derived* d = dynamic_cast (ptr); // check whether the dynamic cast is performed or not if ( d != NULL) { cout << ' Dynamic casting is done successfully'; } else { cout << ' Dynamic casting is not done successfully'; } } 

Kimenet:

 Dynamic casting is done successfully. 

A Cast Type újraértelmezése

A reinterpret_cast típusú casting arra szolgál, hogy bármely más típusú mutatóra mutatót öntsön, függetlenül attól, hogy az adott mutató egymáshoz tartozik-e vagy sem. Ez azt jelenti, hogy nem ellenőrzi, hogy a mutató vagy a mutató által mutatott adat megegyezik-e vagy sem. És mutatót is dobott egy egész típusra, vagy fordítva.

A reinterpret_cast típusú szintaxis

 reinterpret_cast expression; 

Program a Reinterpret Cast használatához C++ nyelven

Írjunk egy programot, amely bemutatja a mutató konvertálását a C++ nyelvi újraértelmezés segítségével.

 #include using namespace std; int main () { // declaration of the pointer variables int *pt = new int (65); // use reinterpre_cast operator to type cast the pointer variables char *ch = reinterpret_cast (pt); cout << ' The value of pt: ' << pt << endl; cout << ' The value of ch: ' << ch << endl; // get value of the defined variable using pointer cout << ' The value of *ptr: ' << *pt << endl; cout << ' The value of *ch: ' << *ch << endl; return 0; } 

Kimenet:

 The value of pt: 0x5cfed0 The value of ch: A The value of *ptr: 65 The value of *ch: A 

Const Szereplők

A const_cast a forrásmutató const viselkedésének megváltoztatására vagy manipulálására szolgál. Ez azt jelenti, hogy a const kétféleképpen hajthatjuk végre: a const mutatót nem const mutatóra állítva, vagy a const törlését vagy eltávolítását a const mutatóból.

operációs rendszer

A Const Cast típus szintaxisa

 const_cast exp; 

Program a Const Cast használatához C++ nyelven

Írjunk egy programot, amely egy forrásmutatót nem öntött mutatóra önt a const_cast segítségével C++-ban.

 #include using namespace std; // define a function int disp(int *pt) { return (*pt * 10); } int main () { // declare a const variable const int num = 50; const int *pt = # // get the address of num // use const_cast to chnage the constness of the source pointer int *ptr = const_cast (pt); cout << ' The value of ptr cast: ' << disp(ptr); return 0; } 

Kimenet:

 The value of ptr cast: 500