题目描述:
编码实现字符串类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;elsereturn false;
}//'>'运算符重载
bool CNString::operator > (const CNString &string) {if (strcmp(str, string.str) > 0)return true;elsereturn false;
}//'=='运算符重载
bool CNString::operator == (const CNString &string) {if (strcmp(str, string.str) == 0)return true;elsereturn 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;
}

运行结果:

转载于:https://www.cnblogs.com/izzwhf/p/10707180.html

编码实现字符串类CNString实现运算符重载相关推荐

  1. 关于string字符串大小比较以及运算符重载

                            关于string字符串大小比较以及运算符重载  今天在写项目的时候遇到两个时间字符串需要比较大小的情况,例:"20181023"和& ...

  2. 第十三周项目一-分数类中的运算符重载

    /**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年5月25日*版 本 号:v1. ...

  3. 第十二周项目二-Time类中的运算符重载

    /**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年5月24日*版 本 号:v1. ...

  4. 类模板与运算符重载(一个简单的例子)

    类模板与运算符重载(一个简单的例子) 标签(空格分隔): C++ 算法竞赛 下面是一段简单的代码,表示我们建立了一个类模板Vector,可以看做是对STL中vector的简单实现. 为了让这个Vect ...

  5. 项目3-分数类中的运算符重载

    /* * Copyright (c) 2011, 烟台大学计算机学院 * All rights reserved. * 作 者:王静 * 完成日期:2013 年 5 月 5 日 * 版 本 号:v1. ...

  6. /项目3-分数类中的运算符重载

    /* * Copyright (c) 2011, 烟台大学计算机学院 * All rights reserved. * 作 者:王静 * 完成日期:2013 年 4 月 24 日 * 版 本 号:v1 ...

  7. 8-2 实现Time类中的运算符重载

    /* * 作 者: 霍雨佳 * 完成日期:2014 年4月15日 * 版 本 号:v1.0 * 问题描述:实现Time类中的运算符重载 * 样例输入: * 样例输出: * 项目要求:实现Time类中的 ...

  8. 实现复数类中的运算符重载(含有double类型)

    /* * 作 者: 霍雨佳 * 完成日期:2014 年4月15日 * 版 本 号:v1.0 * 问题描述:实现复数类中的运算符重载. * 样例输入: * 样例输出: * 问题分析:一个定义完整的类,是 ...

  9. 8-3 实现分数类中的运算符重载

    /* * 作 者: 霍雨佳 * 完成日期:2014 年4月15日 * 版 本 号:v1.0 * 问题描述:实现分数类中的运算符重载 * 样例输入: * 样例输出: * 项目要求:实现分数类中的运算符重 ...

最新文章

  1. ElasticSearch 倒排索引_08
  2. Bootstrap 媒体列表
  3. 什么叫做数字功放?它的电路原理是什么?
  4. 使用grep进行负匹配(匹配不包含foo的行)
  5. mysql授权许可_分析MySQL的授权许可
  6. Requests 高级用法 —2.18.1 文档
  7. AtCoder Beginner Contest 267 ABC题解
  8. 二叉树、满二叉树、完全二叉树、平衡二叉树、二叉排序树、线索二叉树
  9. 揭秘:张国荣葬礼,袁咏仪为何哭到失控?
  10. 美女画廊(点击上面的图片下面进行显示)
  11. 用不同的QR Code识别库实现二维码的识别(第一篇:opencv 和BoofCV)
  12. 北京航班延误_预测航班延误
  13. MPLAB X IDE开发环境
  14. 电源与地之间接电容的原因分析
  15. storyboard使用入门
  16. 拉面哥的火爆看新媒体时代的底层逻辑!
  17. Java线程池获取全部完成时的状态并执行后续工作
  18. linux sendmail 总结
  19. 《龙虎门》--动作电影新希望
  20. uniapp车牌号组件

热门文章

  1. C语言真的太强大了,C几乎无处不在!
  2. Android设备与外接U盘实现数据读取操作
  3. 互联网的“达尔文”式猜想
  4. java记录日志不打印控制台,java异常在控制台和日志里面的打印记录
  5. Idea安装完成后打不开的问题
  6. 【数据知多少】一文学懂通过Tushare、AKshare、baostock、Ashare、Pytdx获取股票行情数据(含代码)
  7. linux虚拟光驱路径,linux虚拟光驱怎么用?
  8. BT下载伤硬盘的解决办法
  9. Java毕设项目藏宝阁游戏交易系统(java+VUE+Mybatis+Maven+Mysql)
  10. 项目经验教训总结(教育软件)