Video: U a Hoe (feat. Saintxangelo) 2024
Structuursjablonen hebben veel interessante toepassingen, zoals het maken van een gegevensrepository die niet afhankelijk is van een bepaald type. Het voorbeeld van StructureTemplate laat hier een dergelijk gebruik zien.
# include namespace std; template struct Volume {T height; T-breedte; T lengte; Volume () {height = 0; breedte = 0; length = 0;} T getvolume () {return height * width * length;} T getvolume (T H, T W, T L) {height = H; breedte = W; lengte = L; terugkeerhoogte * breedte * lengte;}}; int main () {Volume eerst; cout << "eerste volume:" << eerst. getvolume () << endl; eerste. hoogte = 2; eerste. breedte = 3; eerste. lengte = 4; cout << "eerste volume:" << eerst. getvolume () << endl; Volume seconde; cout << "tweede volume:" << seconde. getvolume (2, 1, 3. 2, 4. 3) << endl; cout << "height:" << second. hoogte << endl; cout << "width:" << second. breedte << endl; cout << "length:" << second. lengte << endl; return 0;}
In dit geval bevat de structuur hoogte-, breedte- en lengtegegevenswaarden die de code kan gebruiken om het volume te bepalen. De structuur bevat een constructor om de waarden te initialiseren, dus zelfs als iemand callsvolume () aanroept zonder de structuur te initialiseren, gebeurt er niets slechts.
De structuur biedt onafhankelijke toegang tot elk van de gegevenswaarden. Je kunt ze zo nodig instellen of krijgen.
De functie getvolume () is overbelast. Je kunt het met of zonder invoerwaarden noemen. De code in main () test de structuur grondig. Dit is wat u ziet als de uitvoer van dit voorbeeld:
Eerste volume: 0 Eerste volume: 24 Tweede volume: 28. 896 Hoogte: 2. 1 Breedte: 3. 2 Lengte: 4. 3
U kunt structuren gebruiken voor een ander interessant doel. De C ++ -standaard zegt dat je geen typedef-sjabloon kunt maken. De volgende code geeft bijvoorbeeld een foutmelding wanneer u probeert deze te compileren:
sjabloon typedef kaart MyDef;
Wanneer u probeert deze code te compileren in Code:: Blokken, ziet u de volgende foutmelding:
fout: sjabloonverklaring van 'typedef'
U kunt echter een typedef definiëren binnen een structuursjabloon. De voorbeeldcode StructureTemplate2 hier laat zien hoe.
# include # include using namespace std; template struct MyDef {typedef map Type;}; int main () {MyDef:: Type huwelijken; huwelijken ["Tom"] = "Suzy"; huwelijken ["Harry"] = "Harriet"; cout << huwelijken ["Tom"] << endl; cout << huwelijken ["Harry"] << endl; return 0;}
Dit voorbeeld overwint de C ++ -beperkingen door het typedef in de struct, MyDef, te plaatsen. Dezelfde structuur kan een willekeurig aantal typedef-invoeren bevatten.
Door een typedef op deze manier te gebruiken, is het eenvoudiger om met de kaart te werken.Het enige waar u zich zorgen over hoeft te maken, is het waardetype - het sleuteltype is al gedefinieerd als tekenreeks.