编码实现字符串类CNString实现运算符重载

题目描述:

编码实现字符串类CNString,该类有默认构造函数、类的拷贝函数、类的析构函数及运算符重载,需实现以下“=”运算符、“+”运算、“[]”运算符、“<”运算符及“>”运算符及“==”运算符(备注:可以用strcpy_s, strcat_s,但禁用STL及String类),以下为各个运算符的运算效果的详细说明

“CNString.h”

#define _CRT_SECURE_NO_WARNINGS
#ifndef CNSTRING_H
#define CNSTRING_H
class CNString
{
public:
CNString(); //默认构造函数
CNString(const char *Str); //构造函数
CNString(const CNString &string); //拷贝构造函数
~CNString(); //析构函数
CNString & operator = (const CNString &string); //'='运算符重载
CNString operator +(const CNString &string); //‘+’运算符重载
char & operator [](int n); //'[]'运算符重载
bool operator < (const CNString &string); //'<'运算符重载
bool operator > (const CNString &string); //'>'运算符重载
bool operator == (const CNString &string); //'=='运算符重载
void show(); //输出函数
private:
char *str;
};
#endif

"CNString.cpp"

#include "pch.h"
#include "CNString.h"
#include<string.h>
#include<iostream> //默认构造函数
CNString::CNString()
{
str = new char[1];
str = '\0';
} //构造函数
CNString::CNString(const char *Str) {
int len = strlen(Str) + 1;
str = new char[len];
strcpy(str, Str);
} //拷贝构造函数
CNString::CNString(const CNString &string) {
int len = strlen(string.str) + 1;
str = new char[len];
strcpy(str, string.str);
} // 析构函数
CNString::~CNString()
{
delete[]str;
} //'='运算符重载
CNString & CNString::operator=(const CNString &string) {
int len = strlen(string.str) + 1;
str = new char[len];
strcpy(str, string.str);
return *this;
} //‘+’运算符重载
CNString CNString::operator +(const CNString &string) {
strcat(str, string.str);
return *this;
} //'[]'运算符重载
char & CNString::operator [](int n) {
return str[n];
} //'<'运算符重载
bool CNString::operator < (const CNString &string) {
if (strcmp(str, string.str) <0)
return true;
else
return false;
} //'>'运算符重载
bool CNString::operator > (const CNString &string) {
if (strcmp(str, string.str) > 0)
return true;
else
return false;
} //'=='运算符重载
bool CNString::operator == (const CNString &string) {
if (strcmp(str, string.str) == 0)
return true;
else
return false;
} //输出函数
void CNString::show() {
std::cout << str << std::endl;
}

"main.cpp"

// main.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
// #include "pch.h"
#include"CNString.h"
#include <iostream> int main()
{
CNString CNStringstr1("abc ");
CNString str2;
str2 = CNStringstr1;
std::cout << "'='号运算符重载测试str2=CNStringstr1:"<<std::endl;
std::cout << "str2=";
str2.show();
std::cout<<std::endl; CNString CNStringstr2("abc");
CNString CNStringstr3("def ");
CNStringstr2 = CNStringstr2 + CNStringstr3;
std::cout << "'+'号运算符重载测试CNStringstr2 = CNStringstr2 + CNStringstr3:" << std::endl;
std::cout<<"CNStringstr2 = ";
CNStringstr2.show();
std::cout << std::endl; CNString nstring1("abc");
std::cout << "'[]'运算符重载测试:" << std::endl;
std::cout<<"nstring1[0] = " << nstring1[0] << " nsting1[2] = " << nstring1[2] << std::endl;
std::cout<< std::endl; CNString CNStringstr4("abc");
CNString CNStringstr5("efg");
std::cout << "'<'运算符重载测试:"<<std::endl;
if (CNStringstr4 < CNStringstr5)
std::cout << "CNStringstr4 < CNStringstr5" << std::endl;
std::cout << std::endl; std::cout << "'>'运算符重载测试:" << std::endl;
if (CNStringstr5 > CNStringstr4)
std::cout << "CNStringstr5 > CNStringstr4" << std::endl;
std::cout << std::endl; CNString CNStringstr6("efg");
std::cout << "'=='运算符重载测试:" << std::endl;
if (CNStringstr5 == CNStringstr6)
std::cout << "CNStringstr5 == CNStringstr6" << std::endl;
return 0;
}

运行结果:

编码实现字符串类CNString实现运算符重载

上一篇:LintCode 846.多关键字排序


下一篇:C++学习之路——1.linux下环境搭建