Какво е Оператор?
Операторът е символ, който указва на компилатора да извърши определена операция. Например има различни видове оператори в C ++, като аритметични оператори, логически оператори, релационни оператори, оператори за присвояване, битови оператори и др.
Какво е претоварване на оператора?
Езикът C ++ позволява на програмистите да придават специални значения на операторите. Това означава, че можете да предефинирате оператора за дефинирани от потребителя типове данни в C++. Например, „+“ се използва за добавяне на вградени типове данни, като int, float и т.н. За да добавите два типа дефинирани от потребителя данни, е необходимо да претоварите оператора „+“.
Синтаксис за претоварване на оператора
C ++ предоставя специална функция, наречена „оператор“ за претоварване на оператора. По-долу е синтаксисът за претоварване на оператора:
клас sampleClass..
Публично:
символ на оператор returnType (аргументи)
..
..
;
Тук „оператор“ е ключова дума, а „символ“ е операторът, който искаме да претоварим.
Примери
След като разбрахте цялостната концепция за претоварване на оператора, нека преминем през няколко работещи примерни програми, за да разберете тази идея по-конкретно. Ще разгледаме следните примери:
- Пример 1: Претоварване на унарния оператор (1)
- Пример 2: Претоварване на унарния оператор (2)
- Пример 3: Претоварване на двоичен оператор
- Пример 4: Претоварване на релационен оператор
Пример 1: Претоварване на унарния оператор (1)
В този пример ще демонстрираме как един единствен оператор може да бъде претоварен в C++. Дефинирахме класа „Square_Box“ и публичните функции, „operator ++ ()“ и „operator ++ (int)“, за да претоварим операторите за инкремент на префикса и postfix. Във функцията “main ()” създадохме обекта “mySquare_Box1.”След това приложихме операторите за инкремент на префикса и постфикса към обекта„ mySquare_Box1 ”, за да демонстрираме претоварването на унарния оператор.
#includeизползване на пространство от имена std;
клас Square_Box
частно:
дължина на поплавъка;
ширина на поплавъка;
височина на поплавъка;
публично:
Квадратна кутия ()
Square_Box (плаващ l, плаващ w, плаващ h)
дължина = l;
ширина = w;
височина = h;
// Претоварване на оператора - префикс оператор "++"
void оператор ++ ()
дължина ++;
ширина ++;
височина ++;
// Претоварване на оператора - оператор за постфикс "++"
void оператор ++ (int)
дължина ++;
ширина ++;
височина ++;
изход за празнота ()
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.изход ();
mySquare_Box1 ++;
Cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.изход ();
++mySquare_Box1;
Cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.изход ();
връщане 0;
Пример 2: Претоварване на унарния оператор (2)
Това е друг пример, в който ще демонстрираме как един единствен оператор може да бъде претоварен в C++. Дефинирахме класа „Square_Box“ и публичните функции „operator - ()“ и „operator - (int)“, за да претоварим операторите за префикс и postfix декремент. Във функцията “main ()” създадохме обекта “mySquare_Box1”. След това сме приложили операторите за дефиниране на префикс и постфикс към обекта “mySquare_Box1”.
#includeизползване на пространство от имена std;
клас Square_Box
частно:
дължина на поплавъка;
ширина на поплавъка;
височина на поплавъка;
публично:
Квадратна кутия ()
Square_Box (float l, float w, float h)
дължина = l;
ширина = w;
височина = h;
// Претоварване на оператора - "-" префикс оператор
void operator - ()
дължина--;
ширина--;
височина--;
// Претоварване на оператора - "-" оператор за постфикс
оператор void - (int)
дължина--;
ширина--;
височина--;
невалиден изход ()
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.изход ();
mySquare_Box1--;
Cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.изход ();
--mySquare_Box1;
Cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.изход ();
връщане 0;
Пример 3: Претоварване на двоичен оператор
Сега ще разгледаме пример за претоварване на двоичен оператор. Синтаксисът за претоварване на двоичен оператор ще бъде малко по-различен от унарното претоварване на оператора. В този пример ще претоварим оператора “+”, за да добавим два обекта “Square_Box”.
#includeизползване на пространство от имена std;
клас Square_Box
частно:
дължина на поплавъка;
ширина на поплавъка;
височина на поплавъка;
публично:
Квадратна кутия ()
Square_Box (float l, float w, float h)
дължина = l;
ширина = w;
височина = h;
// Претоварване на оператора - оператор "+"
Оператор Square_Box + (const Square_Box & obj)
Температура на Square_Box;
темп.дължина = дължина + obj.дължина;
темп.width = width + obj.ширина;
темп.височина = височина + obj.височина;
връщане temp;
невалиден изход ()
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), резултат;
Cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.изход ();
Cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.изход ();
резултат = mySquare_Box1 + mySquare_Box2;
Cout << "Dimensions of resultant square box = " << endl;
резултат.изход ();
връщане 0;
Пример 4: Претоварване на релационен оператор
Сега ще разгледаме пример за претоварване на релационен оператор. Синтаксисът за претоварване на релационен оператор е точно като този на претоварването на двоичния оператор. В този пример ще претоварим „<” and “>”Оператори, които да прилагат към обектите“ Square_Box ”.
#includeизползване на пространство от имена std;
клас Square_Box
частно:
дължина на поплавъка;
ширина на поплавъка;
височина на поплавъка;
публично:
Квадратна кутия ()
Square_Box (float l, float w, float h)
дължина = l;
ширина = w;
височина = h;
// Претоварване на оператора - "<" operator
bool оператор < (const Square_Box& obj)
ако (дължина < obj.length)
връщане вярно;
друго
върнете false;
// Претоварване на оператора - ">" оператор
bool оператор> (const Square_Box & obj)
if (дължина> obj.дължина)
връщане вярно;
друго
връщане false;
изход за празнота ()
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 резултат;
Cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.изход ();
Cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.изход ();
резултат = mySquare_Box1 < mySquare_Box2;
Cout << "mySquare_Box1 < mySquare_Box2 = " << result < mySquare_Box2;
Cout < mySquare_Box2 = " << result << endl;
връщане 0;
Заключение
C ++ е универсален и гъвкав език за програмиране, който се използва широко в различни домейни. Този език за програмиране поддържа полиморфизъм както по време на компилация, така и по време на изпълнение. Тази статия ви показа как да извършите претоварване на оператора в C++. Това е много полезна функция на C ++, която добавя допълнителни усилия за разработчика да дефинира оператора за претоварване, но определено улеснява живота на потребителя от класа.