c++中运算符重载
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c++中运算符重载,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2655字,纯文字阅读大概需要4分钟。
内容图文
c++语言中运算符重载都是通过函数来实现的,所以其实质为函数重载,当c++语言原有的一个运算符被重载之后,它原来所具有的语义并没有消失,只相当于针对一个特定的类定义了一个新的运算符。
<1>用成员函数重载运算符
例1:
#include <iostream> usingnamespace std; class RMB{ public: RMB(unsigned int d,unsigned int c); RMB operator+(RMB&); RMB& operator++(); void display(){ cout<<(yuan+jf/100.0)<<endl; } protected: unsigned int yuan; unsigned int jf; }; RMB::RMB(unsigned int d,unsigned int c){ yuan=d; jf=c; while(jf>=100){ yuan++; jf-=100; } } RMB RMB::operator +(RMB& s){ unsigned int c=jf+s.jf; unsigned int d=yuan+s.yuan; RMB result(d,c); return result; } RMB& RMB::operator++(){ jf++; if(jf>=100){ jf-=100; yuan++; } return *this; } int main(){ RMB d1(1,60); RMB d2(2,50); RMB d3(0,0); d3=d1+d2; ++d3; d3.display(); return0; }
结果:4.11
例2:
#include <iostream> #include <string> usingnamespace std; class String { char name[256]; public: String(char* str){ strcpy(name,str); } String(){ } ~String(){ } String operator+(const String&); void display(){ cout<<"The string is:"<<name<<endl; } }; staticchar* str; String String::operator+(const String& a){ strcpy(str,name); strcat(str,a.name); return String(str);//等价于return str;进行自动类型转换} int main(){ str=newchar[256]; String demo1("Visual C++"); String demo2("6.0"); demo1.display(); demo2.display(); String demo3=demo1+demo2; demo3.display(); String demo4=demo3+"Programming ."; demo4.display(); delete str; return0; }
结果:
例3:
#include <iostream> #include <string> usingnamespace std; class String { char name[256]; public: String(char* str){ cout<<"constructor,char*--->String\n"; strcpy(name,str); } String(String &s){ cout<<"copy constructor\n"; strcpy(name,s.name); } String(){ cout<<"default constructor\n"; } ~String(){ } voidoperator=(const String&s){ strcpy(name,s.name); cout<<"operator ="<<endl; } String operator+(const String&); void display(){ cout<<"The string is:"<<name<<endl; } }; staticchar* str; String String::operator+(const String& a){ String s; cout<<"operator +\n"; strcpy(s.name,name); strcat(s.name,a.name); // return String(str);//等价于return str;进行自动类型转换return s; } int main(){ str=newchar[256]; String demo1("Visual C++"); String demo2("6.0"); demo1.display(); demo2.display(); String demo3; demo3=demo1+demo2; cout<<"---------------\n"; demo3.display(); String demo4; demo4=demo3+"Programming ."; demo4.display(); delete str; cout<<"---------------\n"; String demo5=demo4; demo5.display(); return0; }
结果:
ps:注意拷贝构造函数的应用!23333
<2>友元函数重载运算符
原文:http://www.cnblogs.com/liujunming/p/4547957.html
内容总结
以上是互联网集市为您收集整理的c++中运算符重载全部内容,希望文章能够帮你解决c++中运算符重载所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。