#include<iostream> //运算符“+”重载
#include<string>
using namespace std;
class Complex
{
public:
Complex(double r=0,double i=0){real=r;imag=i;}
Complex operator+(Complex &); //请对参数详细解释下 ,谢谢
void display(string);
private:
double real,imag;
};
Complex Complex::operator+(Complex &c2) //这的C2不明白,这难道是临时变量?
{
return Complex(real+c2.real,imag+c2.imag);
}
void Complex::display(string str)
{
cout<<str<<"=("<<real<<","<<imag<<"i"<<endl;
}
int main()
{
Complex a(3,8),b(5,7),c,d;
d=a+b; //直接使用了的运算符“+”
c=a.operator+(b); //调用运算符函数operator+的第二种形式
c.display("c=a+b");
d.display("d=a+b");
return 0;
}
C++中的运算符重载,帮我详细介绍下
(a)对于双目运算符op,如果它的一个操作数为类A的对象,就可以将op重载为A类的友元函数,该函数有两个形参,其中一个形参的类型是A类。经过这样的重载之后,表达式k op t就相当于函数调用operator op( k, t )(b)对于前置单目运算符U(如负号“-”),若要实现表达式 U oprd 其中oprd为A类的...
C++运算符重载什么意思啊、、看不懂。。。麻烦说通俗点,3Q!
这时候,如果在MyClass中没有对>、<、和==这些运算符进行重载(其实就是在MyClass进行定义),那是没法直接用a>b,a==b,a<b的。因为像<、>、==这些运算符在C++中已有定义,作为C++的标准的一部分,所以我们要重新定义他们的用法时,就要用重载,就是要使用operator关键字。例如有这么个类 class ...
关于C++重载运算符
(一) C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载。(二) C++允许重载的运算符C++中绝大部分的运算符允许重载.不能重载的运算符只有5个:(1) 成员访问运算符.(2) 作用域运算符∷ (3) 条件运算符?:(4) 成员指针运算符 (5) 编译预处理命令的开始符号 (三) 重载不能改...
求助,关于一道C++函数重载的问题
1、运算符重载不改变操作符原先的优先级、结合性和操作数数目,++是单目操作符,所以1不会成立的。你有这样的问题大概是因为双目操作符比如*,可以有x.operator*(y)这种写法吧? 但是这个不改变*是二目操作符的事实。C++规定:双目操作符重载作为成员函数时只能有一个形参,调用方为左操作数,形参...
C++,关于operator的详细总解,(原理和用法)
举个例子:Class A {……;private:vector<int> vec;} 假设有对象a,一般我们想用a.vec[index]来调用数据,但vec是私有啊。所以你想a[index]来调用vec中的数据。那么 A &A::operator[](int index){ return vec[index];} 这样就行了。要把重载理解成函数,operator[]就是一个函数名,参数就...
C++ 运算符重载,解释一下
c = a++;d = ++b;\/\/=== 严格来说你不能用c= 和d= 的。除非你重载了=运算符。虽然能在某些编译器下通过。另外既然是自加预算,就应该这样 CInt& operator ++();CInt& operator ++(int);你问的问题书上都已经讲的很清楚明了了,诸如c++语言程序设计之类的书。
c++运算符重载的调用的具体规则是怎样的?谢谢
1.c++中的运算符除了少数几个(如:类属关系运算符 . ,成员指针运算符 .* ,作用域分辨符 ::, 三目运算符 ?:等吧)外,全部可以重载,而且只能重载c++中已经有的运算符。2.重载之后运算符的优先级和结合性不会发生改变。3.运算符重载时针对新类型的数据的实际需要,对原有运算进行适当...
求助:c++C++ 运算符重载 的参数问题
&表示引用传递,相信你已经知道 const则表示传进来的参数不能被修改,由于这里是引用传递,参数修改后外面的值也会被修改,而这里只是重载+运算,并不希望参数被修改,所以为了安全,一般会定义成const类型
C++重载运算符问题
这种情况下不但要先调用参数构造函数,返回的时候还要调用复制构造函数,而返回后还要把产生的对象给析构掉。而刚才那种返回一个匿名的临时对象的方法,要简单多了。如果有机会看林锐的《高质量C\/C++编程指南》的话,里面有专门提到过这个问题。作者的建议就是,尽量用返回匿名的临时对象方法。另外一个问题...
怎样在C++中重载++运算符
我们知道在C++中重载运算符是很方便的,尤其是类对象之间的运算尤为方便。但是在重载的运算符中有一个比较特殊,就是++和--运算符。我们拿++运算符(重载用于类对象之间的运算)来说,这个是存在前++和后++的,我们怎么在使用时辨识这两个++呢?在重载时又要注意什么问题呢?当我们重载一个运算符时...