C++编写字符串类CNString,该类有默认构造函数、…
2018-08-02 05:44:00来源:博客园 阅读 ()
编码实现字符串类CNString,该类有默认构造函数、类的拷贝函数、类的析构函数及运算符重载,需实现以下“=”运算符、“+”运算、“[]”运算符、“<”运算符及“>”运算符及“==”运算符
以下为各个运算符的运算效果的详细说明:
a) 字符串“=”重载运算符
CNStringstr1("abc ");
CNString str2 = str1;
b) 字符串“+”运算
CNStringstr1("abc");
CNStringstr2("efg ");
str1 = str1 + str2;
c) 字符串“[]”运算
CNString nstring1("abc");
cout<< nstring1[0] ;// 则屏幕显示a
cout<< nstring1[2] ; // 则屏幕显示c
d) “<”运算符
CNStringstr1("abc");
CNStringstr2("efg");
if (str1 <str2 ){
cout<<“str1<str2”<<endl;
}
e) “>”运算符
CNStringstr1("abc");
CNStringstr2("efg");
if (str1 >str2 ){
cout<<“str1>str2”<<endl;
}
f) “==”运算符
CNStringstr1("abc");
CNStringstr2("efg");
if (str1 == str2){
cout<<“str1==str2”<<endl;
}
代码实现:
#include<iostream> #include<string.h> using namespace std; class CNString { private: char *str_F; public: CNString(){str_F=NULL;};//默认构造函数 CNString(char *str);//有参构造函数 CNString(const CNString &other);//类的拷贝函数 ~CNString();//类的析构函数 CNString &operator=(const CNString &obj);//"="号重载 CNString &operator+(const CNString &obj);//"+"号重载 char& operator[](int i);//"[]"号重载 bool operator<(const CNString &obj);//"<"号重载 bool operator>(const CNString &obj);//">"号重载 bool operator==(const CNString &obj);//"=="号重载 void print()//打印str_F的结果 { cout<<str_F<<endl; } }; CNString::CNString(char *str) { str_F = new char(strlen(str)+1); if(str_F!=0) strcpy(str_F,str); } CNString::CNString(const CNString &obj) { str_F = new char(strlen(obj.str_F)+1); if(str_F!=0) strcpy(str_F,obj.str_F); } CNString::~CNString() { delete []str_F; } CNString & CNString::operator=(const CNString &obj) { char * tem=new char(strlen(obj.str_F)+1); strcpy(tem,obj.str_F); str_F=tem; delete[]tem; return *this; } CNString & CNString::operator+(const CNString &obj) { strcat(str_F,obj.str_F); return *this; } char &CNString::operator[](int i) { return str_F[i]; } bool CNString::operator<(const CNString &obj) { int c = strcmp(str_F,obj.str_F); if(c<0) return true; else return false; } bool CNString::operator>(const CNString &obj) { int c = strcmp(str_F,obj.str_F); if(c>0) return true; else return false; } bool CNString::operator==(const CNString &obj) { int c = strcmp(str_F,obj.str_F); if(c==0) return true; else return false; } int main() { CNString str1("abc "); CNString str2("edf"); CNString str3; cout<<"实现运算符+和=重载后:"<<endl; str3 = str1 + str2; str3.print(); cout<<"实现运算符[]重载后:"<<endl; CNString nstring1("abc"); cout<<nstring1[0]<<endl; cout<<"实现运算符'<' '>' '=='重载后:"<<endl; if (str1 <str2 ) { cout<<"str1<str2"<<endl; } if (str1 >str2 ) { cout<<"str1>str2"<<endl; } if(str1==str2) { cout<<"str1==str2"<<endl; } return 0; }
实现效果图:
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- C++ 转换函数搭配友元函数 2020-06-10
- C++ 自动转换和强制类型转换(用户自定义类类型) 2020-06-10
- C++ rand函数 2020-06-10
- C++ 友元函数 2020-06-10
- C++ 运算符重载 2020-06-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash