- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第六章 运算符重载1
第六章 运算符重载
实质是学习函数重载,特别的是该函数的函数名是运算符。运算符重载的目的是,是让类类型数据能够直接使用运算符。这章是类的设计者的折腾。类的设计者为了让类的使用者直接使用运算符来运算类对象,书写了许多运算符重载函数。
规则:(1)都不可重载的运算符:. .* ::
?: # sizeof typeid
(2)重载方式:
a.非静态成员函数(=,[ ], ( ), -只可重载:)
b.友元函数或一般函数(,,只可重载)
(3)重载规则:
a.四个不变原则(优先级、结合性、操作数个数、原有含义)
b.不能有默认参数,不能自创运算符
运算符重载的常规格式:
返回类型 operator运算符(参数)
函数类型 函数名(参数表)
如何写运算符重载函数?
·双目运算符
非静态成员函数 友元函数或一般函数 #include iostream.h
class complex
{ int real,imag;
public:
complex(int r=0,int i=0){real=r;imag=i;}
complex operator+(complex b);
void print()
{coutreal;
if(imag=0)cout+;
coutimagiendl;}
};
complex complex::operator+(complex b)
{ complex temp;
temp.real=this-real+b.real;
temp.imag=this-imag+b.imag;
return temp;
}
void main()
{
complex a(1,2),b(3,4),c;
c=a+b;//c=a.operator+(b);
c.print();
} #include iostream.h
class complex
{ int real,imag;
public:
complex(int r=0,int i=0){real=r;imag=i;}
friend complex operator-(complex ,complex );
void print()
{coutreal;
if(imag=0)cout+;
coutimagiendl;}
};
complex operator-(complex a,complex b)
{
complex temp;
temp.real=a.real-b.real;
temp.imag=a.imag-b.imag;
return temp;
}
void main()
{
complex a(1,2),b(3,4),d;
d=a-b; //c=operator-(a,b);
d.print();
} 对比:参数不同,友元函数的参数同运算符的目数一致。非静态成员函数参数比运算符的目数少一个。
·单目运算符(一般右结合性)++,--
分为前缀和后缀格式,区分方法,在后缀格式中,参数上多加一个int,用于标注是后缀格式。
非静态成员函数 友元函数或一般函数 #include iostream.h
class complex
{ int real,imag;
public:
complex(int r=0,int i=0){real=r;imag=i;}
complex operator++(int); //后缀
complex operator--();
void print()
{coutreal;
if(imag=0)cout+;
coutimagiendl;}
};
complex complex::operator++(int)//后缀
{ complex temp;
temp.real=real++;
temp.imag=imag++;
return temp;
}
complex complex::operator--()
{ real--;
imag--;
return *this;
}
void main()
{
complex a(1,2),b(3,4),c,d;
d=a++; c=--b;
d.print();c.print();
} #include iostream.h
class complex
{ int real,imag;
public:
complex(int r=0,int i=0){real=r;imag=i;}
friend complex operato
您可能关注的文档
最近下载
- 薪酬管理从入门到精通.pdf
- GJB451B-2021装备通用质量特性术语.docx VIP
- 2025昆明滇池国家旅游度假区政务服务局政务服务中心招聘(1人)笔试备考题库及答案解析.docx VIP
- 初中寒假实践总结.docx VIP
- 最新AS9100D:2016全套文件(手册+程序文件+表单共475页).docx VIP
- 客运站年终总结2500字集锦.docx VIP
- ETP48400-C3B1嵌入式电源系统.pdf
- 2025企业安全主体责任清单及对标检查手册.pdf VIP
- 急诊科医疗质量评价体系与考核标准.doc VIP
- TB 10751-2018 高速铁路路基工程施工质量验收标准 含2024年修改单(3-1).pdf
文档评论(0)