第四章运算符重载
2015-06-22 20:45
183 查看
#ifndef _STRING_ #define _STRING_ #include "iostream" using std::ostream; using std::istream; class String { private: char *s; public: String(); String(int n); String(const char *str); String(const String& s2); ~String(); String& operator = (const char *str); String& operator = (const String& s1); friend String& operator + (const String& s1,const String& s2); friend bool operator == (const String& s1,const String& s2); friend bool operator != (const String& s1,const String& s2); friend bool operator >= (const String& s1,const String& s2); friend bool operator <= (const String& s1,const String& s2); friend bool operator > (const String& s1,const String& s2); friend bool operator < (const String& s1,const String& s2); friend ostream& operator << (ostream& output,const String& s1); friend istream& operator >> (istream& input ,String& s1); }; #endif
#include "String.h" #include "cstring" #include "iostream" using std::ostream; using std::istream; using std::endl; using std::cout; String s3; String::String() { s=new char[100]; s[0]='\0'; } String::String(int n) { s=new char ; s[0]='\0'; } String::String(const char *str) { s=new char[100]; strcpy(s,str); } String::String(const String& s2) { strcpy(s,s2.s); } String::~String() { if(s!=NULL) delete []s; } String& String::operator = (const char *str) { strcpy(s,str); return *this; } String& String::operator = (const String& s1) { strcpy(s,s1.s); return *this; } String& operator + (const String& s1,const String& s2) { extern String s3; strcat(s3.s,s1.s); strcat(s3.s,s2.s); return s3; } bool operator == (const String& s1,const String& s2) { if(strcmp(s1.s,s2.s)==0) { return true; } else { return false; } } bool operator != (const String& s1,const String& s2) { if(strcmp(s1.s,s2.s)==0) { return false; } else { return true; } } bool operator >= (const String& s1,const String& s2) { if(strcmp(s1.s,s2.s)>=0) { return true; } else { return false; } } bool operator <= (const String& s1,const String& s2) { if(strcmp(s1.s,s2.s)<=0) { return true; } else { return false; } } bool operator > (const String& s1,const String& s2) { if(strcmp(s1.s,s2.s)>0) { return true; } else { return false; } } bool operator < (const String& s1,const String& s2) { if(strcmp(s1.s,s2.s)<0) { return true; } else { return false; } } ostream& operator << (ostream& output,const String& s1) { output<<s1.s; return output; } istream& operator >> (istream& input ,String& s1) { input>>s1.s; return input; }
#include "iostream" #include "String.h" using std::cin; using std::cout; using std::endl; int main(int argc, char const *argv[]) { String A("Poi"); cout<<A<<endl; String B("ioP"); cout<<B<<endl; String C; String D(A); cout<<D<<endl; C=A+B; cout<<C<<endl; String E("A"); if(A==D) cout<<"A==D"<<endl; if(A<=B) cout<<"A<=B"<<endl; if(A>=E) cout<<"A>=E"<<endl; if(A<B) cout<<"A<B"<<endl; if(A>E) cout<<"A>E"<<endl; if(A!=B) cout<<"A!=B"<<endl; return 0; }
<img src="https://img-blog.csdn.net/20150622204634859?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbG9uZ3hpdWh1YQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
相关文章推荐
- 史上最详细版!java文件打包成exe,在未配置安装JDK和未配置的电脑上运行
- [leetcode] Basic Calculator II
- bzoj2594: [Wc2006]水管局长数据加强版
- jetty
- 网购时代,写在消费者权益保护的新篇章大企业
- AccountManager教程
- 优化产品使用体验记录二
- 开始
- 【机房重构】—上机&订餐
- 用eclipse 将maven项目打war包部署到tomcat
- Xpages引用jquery的两种方法
- java学习之旅07--整数类型_进制转换_编程中的L问题
- 关于CentOS下 yum包下载下的rpm包放置路径
- 《算法导论》读后感
- TCP/IP协议族-----10、移动IP
- Python运算符及表达式
- sql cast,convert,QUOTENAME,exec 函数学习记录
- “持续集成”的可持续困局
- 课程改进意见
- 虚拟机很安全?你错了!病毒不会侵入物理机?你无知了!