Video: Advanced C++: Mixing C and C++ 2024
Datatyperna inneboende är inbyggda i C ++-språket, såsom int , float , och dubbel och de olika pekartyperna. C ++ gör det möjligt för programmeraren att definiera operatörerna för klasser som programmeraren har skapat utöver dessa inneboende operatörer. Detta kallas operatör överbelastning.
Normalt är överbelastning av operatören valfri och försökte inte starta C ++ -programmerare. Många erfarna C ++ -programmerare tror inte att operatörens överbelastning är en bra idé heller. Men du måste lära dig hur man överbelastar en operatör: uppdragsoperatören.
En operatör är inget mer än en inbyggd funktion med en egen syntax. Följande tilläggsoperation
a + b
kan förstås som om den skrevs
operator + (a, b)
Faktum är att C ++ ger varje operatör ett funktionsstilsnamn. Operatörens funktionella namn är operatörssymbolen som föregås av nyckelordsoperatören och följt av lämpliga argumenttyper. Till exempel, operatören + som lägger till en int till en int genererar en int kallas int operator + (int, int).
Alla befintliga operatörer kan definieras för en användardefinierad klass. Således kunde jag skapa en Komplexoperatör * (const Complex &, const Complex &) som skulle tillåta mig att multiplicera två objekt av typen Complex . Den nya operatören kan ha samma semantik som operatören överbelastar, men det behöver inte. Följande regler gäller när överbelastningsoperatörer:
-
Programmeraren kan inte överbelasta . (punkt), :: (kolon), . *, * ->, sizeof och ?: (ternära) operatörer.
-
Programmeraren kan inte uppfinna en ny operatör. Du kan till exempel inte uppfinna operationen x $ y .
-
En operatörs syntax kan inte ändras. Således kan du inte definiera en operation% jag eftersom% redan är definierad som en binär operatör.
-
Operatörens företräde kan inte ändras. Ett program kan inte tvinga operatören + att utvärderas före operatören * .
-
Operatörerna kan inte omdefinieras när de tillämpas på inneboende typer - du kan inte ändra betydelsen av 1 + 2. Befintliga operatörer kan överbelastas endast för nyfinansierade typer.
Överbelastningsoperatörer är en av de saker som verkar som en mycket bättre idé än vad som verkligen är. Vanligtvis introducerar operatörsöverbelastning fler problem än det löser.