操作符重载案例之字符串重载

对字符串进行运算符重载 1、定义一个时间类Time,通过运算符重载实现时间的比较(关系运算)、时间增加/减少若干秒(+=和-=)、时间增加/减少1秒(++和--)、计算两个时间相差的秒数(-)以及输出时间对象的值(时—分—秒)。 class Time { friend int operator-(const Time &t1, const Time &t2); friend ostream &operator<<(ostream &os, const Time &amp... 阅读详情

本次案例自定义一个字符串类(Mystring),然后重载该字符串类以后,就可以向使用string类一样使用Mystring类了;

Mystring.h文件:

#ifndef __MYSTRING_H
#define __MYSTRING_H
class Mystring{
	friend void print(Mystring & oop);
public:
	/*空串  “”*/
	Mystring();
	Mystring(char *str);
	Mystring(Mystring &oop);
	~Mystring();
	Mystring& operator=(Mystring &oop);
private:
	int str_len;
	char *str;
};
void print(Mystring & oop);

#endif

Mystring.cpp文件:

#define _CRT_SECURE_NO_WARNINGS
#include "Mystring.h"
#include <iostream>
#include <string.h>
Mystring::Mystring()
{
	str_len = 0;
	this->str = new char[this->str_len + 1];
	strcpy(this->str, "");
}
Mystring::Mystring(char *str)
{
	if (str == NULL)
	{
		str_len = 0;
		this->str = new char[this->str_len + 1];
		strcpy(this->str, "");
	}
	else
	{
		this->str_len = strlen(str);
		this->str = new char[str_len+1];
		strcpy(this->str,str);
	}
}
/*拷贝构造函数*/
Mystring::Mystring(Mystring & oop)
{
	this->str_len = oop.str_len;
	this->str = new char[str_len + 1];
	strcpy(this->str,oop.str);
}
/*析构函数*/
Mystring::~Mystring()
{
	if (this->str != NULL)
	{
		delete [] this->str;
		this->str = NULL;
		this->str_len = 0;
		std::cout << "析构函数生效" << std::endl;

	}
}

/*输出字符串信息*/
void print(Mystring & oop)
{
	std::cout << oop.str << std::endl;
}

/*等号操作符重载*/
Mystring & Mystring::operator=(Mystring &oop)
{
	this->str_len = oop.str_len;
	this->str = new char[str_len + 1];
	strcpy(this->str, oop.str);
	return *this;
}

main.cpp为测试内容:

#include <iostream>
#include "Mystring.h"
using namespace std;
int main()
{
	{
		Mystring oop1("baibai");
		Mystring oop2("nihao");
		Mystring oop3 = oop2;//调用构造函数实现
		print(oop3);
		oop2 = oop1;//“字符串复制操作,通过等号运算符重载实现”
		print(oop2);
	}
	
	system("pause");
	return 0;
}



2026芯片公司能力五维评估模型 芯片公司技术实力不能仅看TOPS或工艺节点,而应回归可验证的工程本质:制程适配深度决定硅后稳定性,IP复用效率反映设计资产沉淀,验证闭环速度保障流片成功率,软件栈交付厚度影响客户导入周期,量产良率爬坡曲线体现制造协同能力。这五大维度相互咬合,共同构成AI芯片与边缘SoC在2026年能否规模落地的核心技术标尺。面向硬件选型、系统集成与供应链决策,需以PDK定制能力、Verification Reuse Report、Process Window Analysis等实证材料为依据,穿透营销话术,识别真实工程能力 阅读详情

相关推荐

字符串、运算符重载

赋值、相加、比大小、前++、后++ #include #include class String { private: int length; char *ptr; public: String(char *s); ~String(); String(String &s); void display(); String operator =(String &s); String operator +(String &s); int operator >(String &s); int operator <(String &s); int operator =(String &s); String operator++(); String operator++(int); };

第十八章 32用重载赋值运算符函数实现字符串赋值功能

// 32用重载赋值运算符函数实现字符串赋值功能 /* #include &lt;iostream&gt; using namespace std; class String { public: String(); //默认的构造函数 String(const char*const ch); //构造带值的string int getlen()const { retur...

weixin_34292287的博客 264

C++ 重载运算符+==-用于字符串的比较

C++ ,VS2010平台编辑,下载后可以直接使用,模拟打分及求平均分的过程

【C++】运算符重载案例 - 字符串类 ② ( 重载 等号 = 运算符 | 重载 数组下标 [] 操作符 | 完整代码示例 )

一、重载 等号 = 运算符 1、等号 = 运算符 与 拷贝构造函数 2、重载 等号 = 运算符 - 右操作数为 String 对象 3、不同的右操作数对应的 重载运算符函数 4、重载 等号 = 运算符 - 右操作数为 字符串指针 二、重载 下标 [] 运算符 三、完整代码示例 1、String.h 类头文件 2、String.cpp 类实现 3、Test.cpp 测试类 4、执行结果

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 2242

ANSYS 12.1避坑全记录:当Win7+VMware14遇到FLEXlm报错时的自救指南

本文详细介绍了在Windows 7和VMware14环境下安装和运行ANSYS 12.1时遇到的FLEXlm报错问题及其解决方案。通过虚拟机技术隔离时间同步问题,提供从环境配置到许可证管理的完整指南,帮助用户稳定运行这一老旧版本的工程仿真软件。

tt34567的博客 644

不用Root也能抓包?Android高版本HTTPS抓包的3种替代方案(含Charles技巧)

本文针对Android高版本HTTPS抓包难题,提供了三种无需Root权限的实战解决方案:利用VirtualXposed等虚拟沙盒环境、配置Postern等系统级代理工具,以及通过修改应用源码或网络安全配置。文章还详细解析了Charles抓包工具在非Root环境下的高级配置与排错技巧,帮助开发者在遵守安全规范的前提下,有效进行网络调试与监控。

http9protocoller的博客 648

数据结构之-字符串重载函数的实现

1、AString.h文件 #pragma once #include&lt;iostream&gt; const int defaultSize = 128; class AString { //对象-一个或者多个字符的一个有限序列 public: //构造函数,构造一个最大长度为sz的字符串 AString(int sz = defaultSize); //构造函数,由一个已有的字...

数据结构学习心得 1342

【AI落地】AI生成测试用例,claude or gpt?(提效至少 50%)

gpt生成测试用例?当然好使啦,用好了提效50%+,用不好就让他变好!

青禾tester 1971

【C++】运算符重载案例 - 字符串类 ⑤ ( 重载 大于 > 运算符 | 重载 小于 < 运算符 | 重载 右移 >> 运算符 - 使用全局函数重载 | 代码示例 )

一、重载 大于号 / 小于号 运算符 - 使用成员函数重载 1、重载 大于 > 运算符 2、重载 小于 < 运算符 二、重载 右移 >> 运算符 - 使用全局函数重载 三、完整代码示例 1、String.h 类头文件 2、String.cpp 类实现 3、Test.cpp 测试类

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 4211

自动驾驶仿真:Carsim、NI和VTD联合仿真课题二

文章目录前言一、设备配置1、硬件需求2、网络配置二、Carsim工程配置1、创建工程2、创建数据库3、参数配置三、VTD工程配置1、创建工程四、Veristand工程配置1、创建工程五、运行程序 前言 上篇文章《Carsim、NI和VTD联合仿真课题一》简单地介绍了三者之间的联合框架,以及NI与VTD之间简单的组包与拆包指导。这篇文章将要讲述的是如何将三个软件联合起来,如何设置软件参数,用最简单的方法把仿真车开起来。 一、设备配置 1、硬件需求 注:真正的做智能驾驶仿真项目,至少需要两台电脑,一台实时机

zataji的博客 1万+

【AUTOSAR-E2E】-1.4-详述E2E Transformer解决方案

共13页精讲 目录 1“Data Transformation”介绍 1.1 基于SOME/IP Transformer 1.2 基于COM Based Transformer 2 ComXf(COM Based Transformer)介绍 2.1 ComXf(COM Based Transformer)功能规范 2.2 ComXf(COM Based Transformer)提供的服务 2.3 配置注意事项 3 E2EXf(E2E Transformer)介绍 3.1 E2EX...

「汽车电子助手」的博客 4701

第34课 数组操作符的重载

1.字符串类的兼容性 (1)string类最大限度的考虑了C字符串的兼容性 (2)可以按照使用C字符串的方式使用string对象 string s = "abcedefg"; char c = s[i]; 【编程实验】用C方式使用string类 34-1.cpp #include <iostream> #include <string> using...

梦心之魂的博客 49

获取抖音中x-secsdk-csrf-token的方法

获取抖音中x-secsdk-csrf-token的方法

sh_moranliunian的博客 2022

第34课 数组操作符的重载

1、字符串类的兼容性     1.1、string类最大限度的考虑了C字符串的兼容性     1.2、可以按照使用C字符串的方式使用string对象,如     string  s  = "abcdefg" ;     char  c  = s[i]; /********************          用C方式使用string类      ************

中年人 294

R语言中的Gamma分布函数

在R语言中,我们可以使用最大似然估计(Maximum Likelihood Estimation,MLE)或最小二乘估计(Least Squares Estimation,LSE)等方法来估计Gamma分布的参数。本文介绍了在R语言中使用Gamma分布函数的基本操作,包括生成随机变量、计算概率密度函数和累积分布函数,以及参数估计和拟合。函数来生成Gamma分布的随机变量,计算概率密度函数(PDF)和累积分布函数(CDF),以及进行参数估计和拟合。要计算Gamma分布的累积分布函数(CDF),我们可以使用。

ByteWhiz的博客 1633

PPF函数可视化生产可能性边界线(R语言)

假设产品A的生产函数为A = 2 * R1 + R2,产品B的生产函数为B = R1 + 2 * R2,其中A和B分别表示产品A和产品B的产量,R1和R2表示资源1和资源2的分配数量。首先,让我们定义两种产品:产品A和产品B,它们的生产分别需要不同的资源和技术。现在我们已经计算了每种分配比例下的产品A和产品B的产量,接下来我们可以绘制生产可能性边界线。运行完整的代码后,我们将得到一个图形,显示了生产可能性边界线,该线代表经济体在给定资源和技术条件下所能生产的所有产品组合。

2301_79326559的博客 875

操作符重载(二)

一,操作符重载案例之字符串 1.前言   上一篇博文介绍了操作符重载的基本用法和常见操作符的重载示例,这篇文章主要来介绍一下如何用操作符重载和面向对象的基本知识来自己实现字符串这个类。 2.字符串类的功能(String.h) #pragma once # include<iostream> using namespace std; /* * ...

weixin_30659829的博客 65

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

自定义流操作符 重载wcout

开发过程中的记录,Mark一下,以后也会用到. #include #include #include using namespace std; class mystreamw { private: wstringstream _ss; wstring _str; public: friend mystreamw& myend(mystreamw& ms); friend

十年磨一剑,霜刃未曾试! 940

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

c++把char*包装成string

刚学了操作符重载,自己试着练习一下 #include<iostream> #pragma warning (disable:4996) using namespace std; class mystring { friend ostream& operator<<(ostream &os, mystring const& string1); ...

weixin_43260900的博客 278

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

第三十六课:经典问题解析三----狄泰软件学院

文章内容来源于狄泰软件唐老师C++课程课件 一、赋值的疑问 什么时候需要重载赋值操作符 编译器是否提供了默认的赋值操作? 编译器为每个类默认重载了赋值操作符 默认的操作符仅完成浅拷贝 当需要进行深拷贝时必须重载赋值操作符 赋值操作符与拷贝构造函数具有相同的存在意义 #include <iostream> #include <string> using namespac...

STM32使用串口IDLE中断的两种接收不定长数据的方式 208

面试宝典-面试题1

一、题意:对赋值操作符进行重定义,使其可以进行类对象的赋值 二、代码: 1 #include<cstring> 2 #include<cstdio> 3 #include<iostream> 4 using namespace std; 5 6 class CMyString 7 { 8 public:...

weixin_33743880的博客 92

C/C++学习笔记:String类的构造函数、析构函数和赋值函数

#include class String { public: String (const char *str = NULL); //通用构造函数 String (const String &another); //拷贝构造函数 ~String(); //析构函数 String& operator = (const String &rhs); //赋值函数 prote

banbanlin的专栏 883

C++ Primer Plus(第六版)第12章 类和动态内存分配

严重性代码说明项目文件行禁止显示状态 错误 C4996 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. error解决: 在strngbad.cpp头文件处加上: #pragma warning...

生活如此美好,致敬每一个热爱“热爱”的人! 1315

C++实现Mystring类,C++基础

C++与C语言的最大区别之一便是C++是面向对象的编程,是为了解决大规模问题而诞生的,既然是为了解决大规模问题而诞生的,那么C++在域的划分上一定是比C做的更细致了,在C全局变量和局部变量的基础上,C++还划分了名字域和类域。这几个作用域的大小关系由大到小为:全局变量、名字域、类域、局部变量,具体了解可以查看文章末尾的连接,而本次文章我们将在类域中定义一个属于自己的类。本文只是涉及了一些c++的基础语法,希望能够对c++的初学者有一定帮助和启发。

qq_62807406的博客 855

01 String类测试题

实现以下String类并测试这个类。 class String { private: char * s; public: String(); String(const char *); String(const String &); ~String(); String & operator=(const char *); String & operator=(const String &); String operator+(const c

KkkkkH2的博客 496

c++ string类的实现

原文:http://noalgo.info/382.html String是C++中的重要类型,程序员在C++面试中经常会遇到关于String的细节问题,甚至要求当场实现这个类。只是由于时间关系,可能只要求实现构造函数、析构函数、拷贝构造函数等关键部分。 String的实现涉及很多C++的基础知识、内存控制及异常处理等问题,仔细研究起来非常复杂,本文主要做一个简单的总结和归纳。   一 整体...

倾耳听的博客 215
上一篇: 括号操作符重载案例
下一篇: 基本运算符重载实例
LiBin1103
博客等级 码龄9年 38粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值