C++ 二元运算符重载
本节将讨论C++编程语言中的二元运算符重载。含有两个操作数用于执行数学运算的运算符被称为二元运算符重载。它是一种多态的编译技术,通过从程序员或用户那里获取两个操作数,单个运算符可以执行各种功能。有多个二元运算符,如+、-、*、/等,可以直接操作或重载类的对象。
示例,假设我们有两个数字,5和6;并重载二进制(+)运算符。因此,二进制(+)运算符将数字5和6相加并返回11。此外,我们还可以使用二进制运算符进行减法、乘法和除法运算,以进行各种计算。
二进制运算符重载的语法
以下是C++编程语言中二进制运算符重载的语法。
return_type :: operator binary_operator_symbol (arg)
{
// function definition
}
在这里,
return_type(返回类型): 它定义了函数的返回类型。
operator(操作符): 它是函数重载的关键字。
binary_operator_symbol(二元操作符符号): 它代表了重载函数的二元操作符符号,用于执行计算。
arg(参数): 它定义了传递给函数的参数。
重载二元操作符以获得两个复数的和的步骤
步骤 1: 启动程序。
步骤 2: 声明类。
步骤 3: 声明变量及其成员函数。
步骤 4: 使用用户定义的inp()函数获取两个数字。
步骤 6: 类似地,定义二元(-)操作符以减去两个数字。
步骤 7: 调用print()函数以显示输入的数字。
步骤 8: 声明类对象x1、y1、sum和sub。
步骤 9: 现在使用x1和y1对象调用print()函数。
步骤 10: 然后,通过使用“+”和“-”运算符添加和减去对象来获取sum和sub对象的结果。
步骤 11: 最后,使用x1、y1、sum和sub调用print()和print2()函数。
步骤 12: 显示复数的加法和减法。
步骤 13: 停止或终止程序。
示例 1:使用二元(+)和(-)操作符进行两个复数的加法和减法的程序
让我们创建一个程序,通过在C ++编程语言中重载“+”和“-”二元操作符来计算两个复数的加法和减法。
/* use binary (+) operator to add two complex numbers. */
#include <iostream>
using namespace std;
class Complex_num
{
// declare data member or variables
int x, y;
public:
// create a member function to take input
void inp()
{
cout << " Input two complex number: " << endl;
cin >> x >> y;
}
// use binary '+' operator to overload
Complex_num operator + (Complex_num obj)
{
// create an object
Complex_num A;
// assign values to object
A.x = x + obj.x;
A.y = y + obj.y;
return (A);
}
// overload the binary (-) operator
Complex_num operator - (Complex_num obj)
{
// create an object
Complex_num A;
// assign values to object
A.x = x - obj.x;
A.y = y - obj.y;
return (A);
}
// display the result of addition
void print()
{
cout << x << " + " << y << "i" << "\n";
}
// display the result of subtraction
void print2()
{
cout << x << " - " << y << "i" << "\n";
}
};
int main ()
{
Complex_num x1, y1, sum, sub; // here we created object of class Addition i.e x1 and y1
// accepting the values
x1.inp();
y1.inp();
// add the objects
sum = x1 + y1;
sub = x1 - y1; // subtract the complex number
// display user entered values
cout << "\n Entered values are: \n";
cout << " \t";
x1.print();
cout << " \t";
y1.print();
cout << "\n The addition of two complex (real and imaginary) numbers: ";
sum.print(); // call print function to display the result of addition
cout << "\n The subtraction of two complex (real and imaginary) numbers: ";
sub.print2(); // call print2 function to display the result of subtraction
return 0;
}
输出
Input two complex numbers:
5
7
Input two complex numbers:
3
5
Entered values are:
5 + 7i
3 + 5i
The addition of two complex (real and imaginary) numbers: 8 + 12i
The subtraction of two complex (real and imaginary) numbers: 2 - 2i
在上述程序中,我们从用户那里获取两个数字,然后使用二进制运算符来重载’+’和’-‘运算符,以在类中将两个复数相加和相减。
示例2:使用二进制运算符重载来计算两个数的和的程序 让我们创建一个计算类中两个数字之和的程序,通过在C++编程语言中重载二进制加(+)运算符来实现。
/* use binary (+) operator to perform the addition of two numbers. */
#include <iostream>
using namespace std;
class Arith_num
{
// declare data member or variable
int x, y;
public:
// create a member function to take input
void input()
{
cout << " Enter the first number: ";
cin >> x;
}
void input2()
{
cout << " Enter the second number: ";
cin >> y;
}
// overloading the binary '+' operator to add number
Arith_num operator + (Arith_num &ob)
{
// create an object
Arith_num A;
// assign values to object
A.x = x + ob.x;
return (A);
}
// display the result of binary + operator
void print()
{
cout << "The sum of two numbers is: " <<x;
}
};
int main ()
{
Arith_num x1, y1, res; // here we create object of the class Arith_num i.e x1 and y1
// accepting the values
x1.input();
y1.input();
// assign result of x1 and x2 to res
res = x1 + y1;
// call the print() function to display the results
res.print();
return 0;
}
输出
Enter the first number: 5
Enter the second number: 6
The sum of two numbers is: 11
在上面的程序中,我们从用户那里获取两个数字,5和6,然后重载二进制加(+)运算符执行相加操作,返回两个数字的和为11。
示例3:通过重载多个二进制运算符执行算术运算的程序
让我们创建一个程序,在类中重载多个二进制运算符以执行算术运算。
/* use binary operator to perform the arithmetic operations in C++. */
#include <iostream>
using namespace std;
class Arith_num
{
// declare data member or variable
int num;
public:
// create a member function to take input
void input()
{
num = 20; //define value to num variable
}
// use binary '+' operator to add number
Arith_num operator + (Arith_num &ob)
{
// create an object
Arith_num A;
// assign values to object
A.num = num + ob.num;
return (A);
}
// overload the binary (-) operator
Arith_num operator - (Arith_num &ob)
{
// create an object
Arith_num A;
// assign values to object
A.num = num - ob.num;
return (A);
}
// overload the binary (*) operator
Arith_num operator * (Arith_num &ob)
{
// create an object
Arith_num A;
// assign values to object
A.num = num * ob.num;
return (A);
}
// overload the binary (/) operator
Arith_num operator / (Arith_num &ob)
{
// create an object
Arith_num A;
// assign values to object
A.num = num / ob.num;
return (A);
}
// display the result of arithmetic operators
void print()
{
cout << num;
}
};
int main ()
{
Arith_num x1, y1, res; // here we created object of class Addition i.e x1 and y1
// accepting the values
x1.input();
y1.input();
// assign result of x1 and x2 to res
res = x1 + y1;
cout << " Addition : " ;
res.print();
// assign the results of subtraction to res
res = x1 - y1; // subtract the complex number
cout << " \n \n Subtraction : " ;
res.print();
// assign the multiplication result to res
res = x1 * y1;
cout << " \n \n Multiplication : " ;
res.print();
// assign the division results to res
res = x1 / y1;
cout << " \n \n Division : " ;
res.print();
return 0;
}
输出
Addition : 40
Subtraction : 0
Multiplication : 400
Division : 1
在上面的程序中,我们声明变量num的值为20,然后重载了二元加号(+)、减号(-)、乘号(*)和除号(/)运算符,在Arith_num类中执行不同的算术操作。