c++怎么重载运算符?
发布网友
发布时间:2022-04-29 23:50
我来回答
共2个回答
热心网友
时间:2022-06-26 10:13
重载的运算符是带有特殊名称的函数,函数名是由关键字 operator 和其后要重载的运算符符号构成的。与其他函数一样,重载运算符有一个返回类型和一个参数列表。下面的代码是一个例子:
#include <iostream>
using namespace std;
class Box
{
public:
double getVolume(void)
{
return length * breadth * height;
}
void setLength( double len )
{
length = len;
}
void setBreadth( double bre )
{
breadth = bre;
}
void setHeight( double hei )
{
height = hei;
}
// 重载 + 运算符,用于把两个 Box 对象相加
Box operator+(const Box& b)
{
Box box;
box.length = this->length + b.length;
box.breadth = this->breadth + b.breadth;
box.height = this->height + b.height;
return box;
}
private:
double length; // 长度
double breadth; // 宽度
double height; // 高度
};
// 程序的主函数
int main( )
{
Box Box1; // 声明 Box1,类型为 Box
Box Box2; // 声明 Box2,类型为 Box
Box Box3; // 声明 Box3,类型为 Box
double volume = 0.0; // 把体积存储在该变量中
// Box1 详述
Box1.setLength(6.0);
Box1.setBreadth(7.0);
Box1.setHeight(5.0);
// Box2 详述
Box2.setLength(12.0);
Box2.setBreadth(13.0);
Box2.setHeight(10.0);
// Box1 的体积
volume = Box1.getVolume();
cout << "Volume of Box1 : " << volume <<endl;
// Box2 的体积
volume = Box2.getVolume();
cout << "Volume of Box2 : " << volume <<endl;
// 把两个对象相加,得到 Box3
Box3 = Box1 + Box2;
// Box3 的体积
volume = Box3.getVolume();
cout << "Volume of Box3 : " << volume <<endl;
return 0;
}
热心网友
时间:2022-06-26 10:14
Complex是一个复数类,含有私有成员int型a和b。两种重载方式如图:
C/C++重载运算符operator
C/C++中的运算符重载是通过改变运算符的行为来扩展语言功能的关键。在编译过程中,运算符优先级影响着表达式树的构建,编译前端有固定规则,后端则需考虑硬件差异的优化,是编译器复杂性的重要部分。重载运算符时,需注意参数限制,二元运算符必须有明确的左右操作数,不能像函数那样自由设置参数。比如,自...
怎样在C++中重载++运算符
Complex c(1,2);Complex c1;c1 = ++++c;c.dis();c1.dis();return 0;} 上面已经重载完前++运算符了,就像刚刚我们强调的问题,我们的返回值必须要能修改,于是我们返回的是其引用(上面的注释部分)。我们说这次重载我们没用考虑怎样避开两个++怎样区别的问题,现在我们要重载后++,我们要考虑...
C++怎么重载<<和>>,头文件是什么,求详细解释,谢谢
重载输入操作符 >> 与输出操作符类似,输入操作符函数的第一个形参为流的引用,第二个形参为类类型对象的引用(非const,因为 >> 的目的就是将数据读入到该对象中)。istream& operator>>(istream& in, Sales_item& s){ double price; in >> s.isbn >> s.units_sold >> price; ...
C++运算符重载,+-*/的重载,返回值为什么是对象而不是对象的引用?而流操...
+,-,*等返回不了引用,比如+运算符,可以如下重载(为了简单,假设A 只有int x;int y)A operator+(A a,A b) {A sum; sum.x=a.x+b.x; sum.y=a.y+b.y; return sum; } 分析不能用引用的原因: 函数传入了两个参数a,b,并且+只能传入两个参数(c++不允许自己创造运算符...
关于运算符重载,下列表述中正确的是( )。
【答案】:C 重载运算符的规则如下:①c++不允许用户自已定义新的运算符,只能对已有的c++运算符进行重载;②c++不能重载的运算符只有5个;③重载不能改变运算符运算对象的个数;④重载不能改变运算符的优先级和结合性;⑤重载运算符的函数不能有默认的参数;⑥重载的运算符必须和用户定义的自定义类型...
c++运算符重载
c++的一大特性就是重载(overload),通过重载可以把功能相似的几个函数合为一个,使得程序更加简洁、高效。在c++中不止函数可以重载,运算符也可以重载。由于一般数据类型间的运算符没有重载的必要,所以运算符重载主要是面向对象之间的。在进行对象之间的运算时,程序会调用与运算符相对应的函数进行处理,...
关于C++重载运算符
} void main() //主函数 { complex c1(5,4),c2(2,10),c3; //声明复数类的对象 cout<<"c1="; c1.display();cout<<"c2="; c2.display();c3=c1-c2; //使用重载运算符完成复数减法 cout<<"c3=c1-c2=";c3.display();c3=c1+c2; //使用重载运算符完成复数加法 ...
C++重载运算符问题
{ //return num(n + r.get());num newnum(n + r.get());return newnum;} 这种情况下不但要先调用参数构造函数,返回的时候还要调用复制构造函数,而返回后还要把产生的对象给析构掉。而刚才那种返回一个匿名的临时对象的方法,要简单多了。如果有机会看林锐的《高质量C/C++编程指南》的话,...
什么是运算符重载?
运算符重载允许C/C++的运算符在用户定义类型(类)上拥有一个用户定义的意义。重载的运算符是函数调用的语法修饰:class Fred { public:// ...};if 0 // 没有算符重载:Fred add(Fred, Fred);Fred mul(Fred, Fred);Fred f(Fred a, Fred b, Fred c){ return add(add(mul(a,b), mul(...
C++ 运算符的重载问题:什么时候operator()括号里面需要用&和const?不...
const double t是你自己定义的,没问题。表明t在函数内不被修改。如果要写拷贝构造函数,那么必须使用引用,A(const A & a)因为传参的过程就是调用拷贝构造的过程,而拷贝构造就是要定义的。