Mi az Operátor?
Az operátor egy szimbólum, amely jelzi a fordító számára egy adott művelet végrehajtását. Például különböző típusú operátorok vannak a C ++ - ban, például számtani operátorok, logikai operátorok, relációs operátorok, hozzárendelési operátorok, bitenkénti operátorok és még sok más.
Mi a kezelő túlterhelése?
A C ++ nyelv lehetővé teszi a programozók számára, hogy különleges jelentéseket adjanak az operátoroknak. Ez azt jelenti, hogy újból meghatározhatja az operátort a felhasználó által definiált adattípusokhoz a C-ben++. Például a „+” -ot beépített adattípusok, például int, float stb. Hozzáadására használják. Kétféle felhasználó által definiált adat hozzáadásához túlterhelni kell a „+” operátort.
Szintaxis a kezelő túlterheléséhez
A C ++ az operátornak nevezett speciális funkciót biztosítja a kezelő túlterheléséhez. Az operátor túlterhelésének szintaxisa a következő:
osztály sampleClass…
Nyilvános:
returnType operátor szimbólum (argumentumok)
…
…
;
Itt az „operátor” egy kulcsszó, a „szimbólum” pedig az az operátor, amelyet túlterhelni akarunk.
Példák
Most, hogy megértette a kezelő túlterhelésének általános koncepcióját, menjünk át néhány működő példaprogramon, hogy konkrétabban megértsük ezt az elképzelést. A következő példákat mutatjuk be:
- 1. példa: Unary Operator túlterhelés (1)
- 2. példa: Unary Operator túlterhelés (2)
- 3. példa: Bináris operátor túlterhelése
- 4. példa: A relációs operátor túlterhelése
1. példa: Unary Operator túlterhelés (1)
Ebben a példában bemutatjuk, hogyan lehet az unáris operátort túlterhelni C-ben++. Meghatároztuk a „Square_Box” osztályt és a nyilvános függvényeket, az „operátor ++ ()” és az „operátor ++ (int)” elemeket az előtag és a postfix növekmény operátorok túlterheléséhez. A „main ()” függvényben létrehoztuk a „mySquare_Box1” objektumot.”Ezután az előtag és a postfix növekmény operátorokat alkalmaztuk a„ mySquare_Box1 ”objektumra, hogy bemutassuk az unariás operátor túlterhelését.
#includenévtér használata std;
osztály Square_Box
magán:
úszó hossza;
úszó szélessége;
úszómagasság;
nyilvános:
Square_Box ()
Square_Box (úszó l, úszó w, úszó h)
hossz = l;
szélesség = w;
magasság = h;
// Operátor túlterhelése - "++" előtag operátor
void operátor ++ ()
hossz ++;
szélesség ++;
magasság ++;
// Operátor túlterhelése - "++" postfix operátor
void operátor ++ (int)
hossz ++;
szélesség ++;
magasság ++;
érvénytelen kimenet ()
cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;
;
int main ()
Square_Box mySquare_Box1 (3.0, 5.0, 6.0);
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.Kimenet();
mySquare_Box1 ++;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.Kimenet();
++mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.Kimenet();
visszatér 0;
2. példa: Unary Operator túlterhelés (2)
Ez egy másik példa, amelyben bemutatjuk, hogyan lehet az unáris operátort túlterhelni C-ben++. Meghatároztuk a „Square_Box” osztályt és a nyilvános függvényeket, az „operátor - ()” és az „operátor - (int)” kifejezéseket az előtag és a postfix dekrement operátorok túlterheléséhez. A „main ()” függvényben létrehoztuk a „mySquare_Box1” objektumot. Ezután az előtag és a postfix csökkentési operátorokat alkalmaztuk a „mySquare_Box1” objektumra.
#includenévtér használata std;
osztály Square_Box
magán:
úszó hossza;
úszó szélessége;
úszómagasság;
nyilvános:
Square_Box ()
Square_Box (úszó l, úszó w, úszó h)
hossz = l;
szélesség = w;
magasság = h;
// Operátor túlterhelése - "-" előtag operátor
érvénytelen operátor - ()
hossz--;
szélesség--;
magasság--;
// Operátor túlterhelése - "-" postfix operátor
érvénytelen operátor - (int)
hossz--;
szélesség--;
magasság--;
érvénytelen kimenet ()
cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;
;
int main ()
Square_Box mySquare_Box1 (3.0, 5.0, 6.0);
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.Kimenet();
mySquare_Box1--;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.Kimenet();
--mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.Kimenet();
visszatér 0;
3. példa: Bináris operátor túlterhelése
Most megnézzük a bináris operátorok túlterhelésének példáját. A bináris operátorok túlterhelésének szintaxisa némileg eltér az unariás operátorok túlterhelésétől. Ebben a példában túlterheljük a „+” operátort két „Square_Box” objektum hozzáadásához.
#includenévtér használata std;
osztály Square_Box
magán:
úszó hossza;
úszó szélessége;
úszómagasság;
nyilvános:
Square_Box ()
Square_Box (úszó l, úszó w, úszó h)
hossz = l;
szélesség = w;
magasság = h;
// Operátor túlterhelése - "+" operátor
Square_Box operátor + (const Square_Box & obj)
Square_Box temp;
temp.hossz = hossz + objektum.hossz;
temp.szélesség = szélesség + obj.szélesség;
temp.magasság = magasság + objekt.magasság;
visszatérő hőmérséklet;
érvénytelen kimenet ()
cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;
;
int main ()
Square_Box mySquare_Box1 (3.0, 5.0, 6.0), mySquare_Box2 (2.0, 3.0, 5.0), eredmény;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.Kimenet();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.Kimenet();
eredmény = mySquare_Box1 + mySquare_Box2;
cout << "Dimensions of resultant square box = " << endl;
eredmény.Kimenet();
visszatér 0;
4. példa: A relációs operátor túlterhelése
Most megnézzük a relációs operátor túlterhelésének példáját. A relációs operátor túlterhelésének szintaxisa megegyezik a bináris operátor túlterhelésével. Ebben a példában túlterheljük a<” and “>”Operátorok alkalmazzák a„ Square_Box ”objektumokra.
#includenévtér használata std;
osztály Square_Box
magán:
úszó hossza;
úszó szélessége;
úszómagasság;
nyilvános:
Square_Box ()
Square_Box (úszó l, úszó w, úszó h)
hossz = l;
szélesség = w;
magasság = h;
// Operátor túlterhelése - "<" operator
bool operátor < (const Square_Box& obj)
ha (hossz < obj.length)
return true;
más
return false;
// Operátor túlterhelése - ">" operátor
bool operátor> (const Square_Box & obj)
ha (hossz> obj.hossz)
return true;
más
return false;
érvénytelen kimenet ()
cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;
;
int main ()
Square_Box mySquare_Box1 (2.0, 3.0, 5.0), mySquare_Box2 (4.0, 6.0, 8.0);
bool eredmény;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.Kimenet();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.Kimenet();
eredmény = mySquare_Box1 < mySquare_Box2;
cout << "mySquare_Box1 < mySquare_Box2 = " << result < mySquare_Box2;
cout < mySquare_Box2 = " << result << endl;
visszatér 0;
Következtetés
A C ++ egy általános célú és rugalmas programozási nyelv, amelyet széles körben használnak a különböző területeken. Ez a programozási nyelv támogatja a fordítási és a futási idejű polimorfizmust is. Ez a cikk bemutatta, hogyan kell végrehajtani az operátor túlterhelését C-ben++. Ez a C ++ nagyon hasznos tulajdonsága, amely némi extra erőfeszítést jelent a fejlesztő számára, hogy meghatározza az operátort a túlterheléshez, de mindenképpen megkönnyíti az osztály felhasználóinak életét.