题目描述:
编码实现字符串类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. 【leetcode75】Intersection of Two Arrays(数组的交集)
  2. 陆奇谢幕后,百度的“新”时代
  3. 【Flutter】shared_preferences 本地存储 ( 简介 | 安装 shared_preferences 插件 | 使用 shared_preferences 流程 )
  4. 【Linux系统编程学习】Linux系统IO函数(open、read、write、lseek)
  5. C语言顺序结构程序设计PPT,C语言习题集与实验指导 教学课件 伍鹏、杜红、王圆妹、邓绍金 第3章 顺序结构程序设计.pdf...
  6. 谈谈我的程序人生程序生涯-飞鸽传书
  7. android图片垂直居中,img图片在div里垂直居中的最佳解决方案
  8. iptables基础概念
  9. 缓存key生成策略的一些思考
  10. css中的单位换算_GitHub - WangQiangrong/cssUnitTransform: css单位转换工具
  11. 【拉灯君第三弹】母函数-HDU1085-泰山下的AC
  12. Qt 获取当前屏幕分辨率
  13. 怎样在富文本编辑器插入图片
  14. Linux软件 绑定硬件ID 做加密 cryptopp RSA-encryption
  15. uniapp使用高德地图线路规划
  16. C++语言学习(八)——操作符重载
  17. spring boot服务器内存不足排查
  18. Simultaneous Feature Learning and Hash Coding with Deep Neural Networks
  19. 上海自动驾驶开放测试道路总里程超530公里,滴滴首家获全路段测试牌照
  20. springboot2稳定版本_SpringBoot2.2.x 版本CPU增高BUG分析|chu

热门文章

  1. dpi重启后会恢复_DPI 设置过大该如何还原?
  2. php扩展cURL执行中途无响应
  3. 【时间序列】时间序列统计分析相关知识的总结与梳理
  4. HW - VCN 介绍
  5. Next FlipBook Maker Pro(h5电子书翻页效果制作软件)官方正式版V2.7.20 | h5翻页杂志制作软件下载
  6. 【Vissim】做一次完整的交通仿真——1.基本认识
  7. cadence修改板框倒角_Allegro软件中如何对板框进行倒角及倒角不成功解决方法
  8. 魔兽世界,你不是一个人
  9. 量化策略更新换代 五大私募机构演绎“快”字诀
  10. Android学之客户端服务端Socket简单通信