编码实现字符串类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;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实现运算符重载相关推荐
- 关于string字符串大小比较以及运算符重载
关于string字符串大小比较以及运算符重载 今天在写项目的时候遇到两个时间字符串需要比较大小的情况,例:"20181023"和& ...
- 第十三周项目一-分数类中的运算符重载
/**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年5月25日*版 本 号:v1. ...
- 第十二周项目二-Time类中的运算符重载
/**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年5月24日*版 本 号:v1. ...
- 类模板与运算符重载(一个简单的例子)
类模板与运算符重载(一个简单的例子) 标签(空格分隔): C++ 算法竞赛 下面是一段简单的代码,表示我们建立了一个类模板Vector,可以看做是对STL中vector的简单实现. 为了让这个Vect ...
- 项目3-分数类中的运算符重载
/* * Copyright (c) 2011, 烟台大学计算机学院 * All rights reserved. * 作 者:王静 * 完成日期:2013 年 5 月 5 日 * 版 本 号:v1. ...
- /项目3-分数类中的运算符重载
/* * Copyright (c) 2011, 烟台大学计算机学院 * All rights reserved. * 作 者:王静 * 完成日期:2013 年 4 月 24 日 * 版 本 号:v1 ...
- 8-2 实现Time类中的运算符重载
/* * 作 者: 霍雨佳 * 完成日期:2014 年4月15日 * 版 本 号:v1.0 * 问题描述:实现Time类中的运算符重载 * 样例输入: * 样例输出: * 项目要求:实现Time类中的 ...
- 实现复数类中的运算符重载(含有double类型)
/* * 作 者: 霍雨佳 * 完成日期:2014 年4月15日 * 版 本 号:v1.0 * 问题描述:实现复数类中的运算符重载. * 样例输入: * 样例输出: * 问题分析:一个定义完整的类,是 ...
- 8-3 实现分数类中的运算符重载
/* * 作 者: 霍雨佳 * 完成日期:2014 年4月15日 * 版 本 号:v1.0 * 问题描述:实现分数类中的运算符重载 * 样例输入: * 样例输出: * 项目要求:实现分数类中的运算符重 ...
最新文章
- 【leetcode75】Intersection of Two Arrays(数组的交集)
- 陆奇谢幕后,百度的“新”时代
- 【Flutter】shared_preferences 本地存储 ( 简介 | 安装 shared_preferences 插件 | 使用 shared_preferences 流程 )
- 【Linux系统编程学习】Linux系统IO函数(open、read、write、lseek)
- C语言顺序结构程序设计PPT,C语言习题集与实验指导 教学课件 伍鹏、杜红、王圆妹、邓绍金 第3章 顺序结构程序设计.pdf...
- 谈谈我的程序人生程序生涯-飞鸽传书
- android图片垂直居中,img图片在div里垂直居中的最佳解决方案
- iptables基础概念
- 缓存key生成策略的一些思考
- css中的单位换算_GitHub - WangQiangrong/cssUnitTransform: css单位转换工具
- 【拉灯君第三弹】母函数-HDU1085-泰山下的AC
- Qt 获取当前屏幕分辨率
- 怎样在富文本编辑器插入图片
- Linux软件 绑定硬件ID 做加密 cryptopp RSA-encryption
- uniapp使用高德地图线路规划
- C++语言学习(八)——操作符重载
- spring boot服务器内存不足排查
- Simultaneous Feature Learning and Hash Coding with Deep Neural Networks
- 上海自动驾驶开放测试道路总里程超530公里,滴滴首家获全路段测试牌照
- springboot2稳定版本_SpringBoot2.2.x 版本CPU增高BUG分析|chu
热门文章
- dpi重启后会恢复_DPI 设置过大该如何还原?
- php扩展cURL执行中途无响应
- 【时间序列】时间序列统计分析相关知识的总结与梳理
- HW - VCN 介绍
- Next FlipBook Maker Pro(h5电子书翻页效果制作软件)官方正式版V2.7.20 | h5翻页杂志制作软件下载
- 【Vissim】做一次完整的交通仿真——1.基本认识
- cadence修改板框倒角_Allegro软件中如何对板框进行倒角及倒角不成功解决方法
- 魔兽世界,你不是一个人
- 量化策略更新换代 五大私募机构演绎“快”字诀
- Android学之客户端服务端Socket简单通信