het trefwoord typedef in C++ wordt gebruikt voor het aliassen van bestaande gegevenstypen, door de gebruiker gedefinieerde gegevenstypen en verwijzingen naar een betekenisvollere naam. Met Typedefs kunt u beschrijvende namen geven aan standaardgegevenstypen, waardoor u uw code ook zelf kunt documenteren. Meestal worden typedefs gebruikt voor aliasing, alleen als de vooraf gedefinieerde naam te lang of te complex is om steeds opnieuw te schrijven. Het onnodige gebruik van typedef is over het algemeen geen goede gewoonte.
Syntaxis:
cast in naar string java
typedef>
Voorbeeld:
typedef std::vector vInt;>
Hieronder vindt u het C++-programma om typedef te implementeren
C++
// C++ Program to implement typedef> #include> > using> namespace> std;> > int> main()> {> > // Now we can make more vectors by using vInt> > typedef> std::vector<> int> >vInt;> > > // vec1 is a vectorof type int> > vInt v;> > > v.push_back(190);> > v.push_back(180);> > v.push_back(10);> > v.push_back(10);> > v.push_back(27);> > > for> (> auto> X : v) {> > cout << X <<> ' '> ;> > }> > > return> 0;> }> |
>
>Uitvoer
190 180 10 10 27>
Toepassingen van typedef in C++
- typedef in C++ kan worden gebruikt voor het aliasen van vooraf gedefinieerde gegevenstypen met lange namen.
- Het kan worden gebruikt met STL-datastructuren zoals Vectoren, tekenreeksen, kaarten, enz.
- typedef kan ook met arrays worden gebruikt.
- We kunnen typedef gebruiken met normale aanwijzingen net zoals functie-aanwijzers .
Typedef gebruiken met vooraf gedefinieerde gegevenstypen
Typedef kan worden gebruikt voor het aliasen van vooraf gedefinieerde gegevenstypen zoals int, char, zweven, en hun derivaten zoals lang, kort, ondertekend, En niet ondertekend. De nieuwe alias kan vervolgens worden gebruikt voor het maken van nieuwe variabelen van respectievelijke typen.
Syntaxis:
typedef>
Voorbeeld:
C++
// C++ for using typedef with predefined data types> #include> > using> namespace> std;> > int> main()> {> > // ulli can now be used for making more> > // unsigned long long int type variables> > typedef> unsigned> long> long> int> ulli;> > // ulli used to make variables> > ulli a{ 1232133 };> > cout << a;> > return> 0;> }> |
>
>Uitvoer
1232133>
Typedef gebruiken met STL-datastructuren
typedef kan ook worden gebruikt met STL-gegevensstructuren, leuk vinden Vectoren, tekenreeksen, kaarten, enz. Als wij een van degenen zijn die niet het geheel willen importeren std-naamruimte in onze code moeten we std::vector, std::string, enz. keer op keer schrijven. Het gebruik van typedef kan in dit geval dus een snelle manier zijn om dit te voorkomen en onze code schoon en leesbaar te houden.
Syntaxis:
typedef>
Voorbeeld:
C++
// C++ Program to display usage for typedef with vectors> #include> #include> > int> main()> {> > // Now we can make more vectors by using vInt> > typedef> std::vector<> int> >vInt;> > // vec1 is a vectorof type int> > vInt vec1{ 1, 2, 3, 6, 2, 1 };> > > // Outputting the vector> > for> (> int> i = 0; i std::cout << vec1[i] <<' '; } return 0; }> |
>
>Uitvoer
1 2 3 6 2 1>
Typedef gebruiken met arrays
typedef kan worden gebruikt met arrays voor het maken van nieuwere arrays (net zoals het gebruik ervan met STL-datastructuren). We kunnen eenvoudig nieuwe arrays maken of arrays van arrays maken met behulp van typedef met arrays, terwijl onze code naadloos leesbaar blijft.
Syntaxis:
typedef [ ]>
Hierna < alias_naam> kan nu worden gebruikt voor het maken van arrays van het type- < gegevenstype> en maat .
C++
// C++ program to show use of typedef with arrays> #include> using> namespace> std;> > int> main()> {> > > typedef> int> arr[3];> > > // Making new 1D array> > > arr array1{ 1 , 1, 1};> > > > cout <<> 'Array output: '> > <<> '
'> ;> > for> (> int> i = 0; i <3; i++) {> > cout << array1[i] <<> ' '> ;> > }> > cout <<> '
'> ;> > > // Making new 2D array> > // Matrix is an array of arrays with size> > // ( 3 X 3 )> > arr matrix[3];> > > cout <<> 'Matrix output: '> > <<> '
'> ;> > > for> (> int> i = 0; i <3; i++) {> > for> (> int> j = 0; j <3; j++) {> > // Initializing the matrix> > matrix[i][j] = i * j;> > }> > }> > > // Outputting the matrix> > > for> (> int> i = 0; i <3; i++) {> > for> (> int> j = 0; j <3; j++) {> > cout << matrix[i][j] <<> ' '> ;> > }> > cout <<> '
'> ;> > }> > > return> 0;> }> |
>
>Uitvoer
Array output: 1 1 1 Matrix output: 0 0 0 0 1 2 0 2 4>
Typedef gebruiken met verwijzingen
Typedef kan ook met pointers worden gebruikt. Voor het sneller aanmaken van pointers en het leesbaar houden van de code. We kunnen ze gebruiken met zowel datapointers als functiepointers.
(i) Gebruik met dataaanwijzers:
Hieronder vindt u de syntaxis, het voorbeeld en de broncode voor het gebruik van typedef met gegevensaanwijzers
Syntaxis:
typedef *>
Voorbeeld:
typedef int* iPtr; iPtr pointer1, pointer2;>
Hieronder vindt u het programma om typedef met datapointers te gebruiken.
C++
// C++ Program to showcase the use of typedef> // with data pointer> > #include> using> namespace> std;> > int> main()> {> > int> a = 10;> > int> b = 20;> > // iPtr can now be used to create new pointers of type> > // int> > typedef> int> * iPtr;> > > iPtr pointer_to_a = &a;> > iPtr pointer_to_b = &b;> > > cout <<> 'a is: '> << *pointer_to_a <<> '
'> ;> > cout <<> 'b is: '> << *pointer_to_b <<> '
'> ;> > > return> 0;> }> |
>
Booleaans naar tekenreeks
>Uitvoer
a is: 10 b is: 20>
(ii) Gebruik met functieaanwijzers:
Hieronder vindt u de syntaxis, het voorbeeld en de code om het gebruik van typedef met functieaanwijzers weer te geven.
Syntaxis:
typedef < return_type>(*< alias_name>)(< parameter_type>,< parameter_type>, ....);>
Voorbeeld:
typedef int (*fun_ptr)(int, int); fun_ptr new_ptr = &function;>
Hier kan fun ptr nu worden gebruikt om meer functieaanwijzers te maken. Dit wordt duidelijker in de onderstaande code.
C++
#include> > // Normal pointer to a function> int> (*func_ptr1)(> int> ,> int> );> > // Using typedef with pointer to a function> typedef> int> (*func_ptr2)(> int> ,> int> );> > // Function to multiply two numbers> int> product(> int> u,> int> v) {> return> u * v; }> > int> main(> void> )> {> > func_ptr1 = &product;> > > // Using typedefed function pointer for creating new> > // function pointer 'new_func'> > func_ptr2 new_func_ptr = &product;> > > // Using normal pointer to a function> > int> x2 = (*func_ptr1)(3, 2);> > > // Using the new function pointer> > int> x1 = (*new_func_ptr)(2, 4);> > > std::cout << x1 << std::endl;> > std::cout << x2 << std::endl;> }> |
>
>Uitvoer
8 6>
Hier is func_ptr1 een normale functieaanwijzer, terwijl func_ptr2 een typedef-functieaanwijzer is en deze kan worden gebruikt om meer functieaanwijzers te maken met 2 gehele getallen als argumenten en met retourtype int.
Opmerking: func_ptr2 kan niet langer worden gebruikt als een onafhankelijke functieaanwijzer en kan alleen worden gebruikt voor het maken van nieuwe functieaanwijzers die alleen naar een functie kunnen verwijzen die int retourneert en twee int-typen als hun parameters neemt.