问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

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++怎么重载&lt;&lt;和&gt;&gt;,头文件是什么,求详细解释,谢谢

重载输入操作符 &gt;&gt; 与输出操作符类似,输入操作符函数的第一个形参为流的引用,第二个形参为类类型对象的引用(非const,因为 &gt;&gt; 的目的就是将数据读入到该对象中)。istream&amp; operator&gt;&gt;(istream&amp; in, Sales_item&amp; s){ double price; in &gt;&gt; s.isbn &gt;&gt; s.units_sold &gt;&gt; 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&lt;&lt;"c1="; c1.display();cout&lt;&lt;"c2="; c2.display();c3=c1-c2; //使用重载运算符完成复数减法 cout&lt;&lt;"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()括号里面需要用&amp;和const?不...

const double t是你自己定义的,没问题。表明t在函数内不被修改。如果要写拷贝构造函数,那么必须使用引用,A(const A &amp; a)因为传参的过程就是调用拷贝构造的过程,而拷贝构造就是要定义的。

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
孩子的冠姓权是怎么回事? 如何看待孩子冠姓权问题? 意定监护协议样本内容是什么? 自愿放弃监护权合同范本是怎样的? 放弃孩子监护权协议书怎么写? 自愿变更监护权协议书怎么写? 变更监护权协议书怎么写? 子女监护权变更协议范本是怎样的? 变更子女监护权协议书 宝诗龙Epure焦特普尔之蓝腕表:诠释极致经典 场所什么意思? 鹤望兰的花期是几月? c++重载运算符号 “如果我说了真的爱你,谁来收拾这被破坏的友谊”是哪首歌的歌词?求大神指点 哪位能说一下“如果我说我真的爱你”这句歌词是那首歌的,? 鹤望兰什么时候开花?几月份 有一首歌的一句是:“如果我说我真的爱你”,后面我不记得了这首歌是? 苹果x手机保密柜怎么弄? 有一首歌歌词中有一句“如果我真的说爱你”是那首歌啊? “如果我说真的爱你”是哪首歌上面的歌词 有首歌里面有句歌词是,如果我是真的爱你,这歌叫什么名字啊,歌词 如果我说我真的爱你,那么谁来收拾这被破坏的友谊。这是哪首歌曲里面的歌词 如果我说我是真的爱你,谁来收拾这个被破坏的友谊,是啥歌啊 如果我说我真的爱你,谁来收拾这被破坏的友谊 是什么歌的歌词 SQL如何批量更新数据 如果我说我是真的爱你,谁来打破这被破坏的友谊 是什么歌 有一首歌,歌词是如果我说我是真的爱你,我开始认真 有句歌词是 “如果我说我真的爱你,谁来收拾那些被破坏的友谊” 是什么歌? 如果我说真的爱你这是哪首歌的歌词 歌词里有:如果我说我真的爱你。是什麽歌啊? 如果我说我真的爱你,谁来收拾这被破坏的友谊…如果我能忍住这个秘密… 那首歌的歌词 C++运算符重载详细讲解 如果我说 我真的爱你 谁来收拾 那些被破坏的友谊 如果我忍住这个秘密 温暖冬天 就会遥遥而无期 场所是指什么地方,家里可以称场所吗? iphone怎么设置文件保险柜 如果我说我是真的爱你。 c++的所有运算符都可以重载吗? 场合是什么意思 怎样让鹤望兰常年开花? c++中为什么运算符的重载要与类联系在一起? 如果我说我真的爱你,谁来收拾那些被破坏的友谊! 这句话什么意思???_百度问一问 名词は 名词【场所】です可以解释为什么什么在某某地方吗 string重载bool operator==(const string&s1,const string&s2);&#47;&#47;请问.调用这个函数 日语中“场所”有“所在地”的意思,那“我在中国”能不能说“私の场所は中国” 请问我苹果手机的密码保险箱密码忘记要怎么找回 操作符的重载方法 场合的意思? 苹果可以放在保险柜里吗? 这两种运算符++重载有什么区别 还有为什么参数是int 不是对象 鹤望兰的花期要怎样调控?
  • 焦点

最新推荐

猜你喜欢

热门推荐