question1 赋值运算操作符
注意的问题书上讲的很详细了
下面是代码实现,但是VS有一个问题,strcpy安全性较低,虽然可以通脱编译,但是运行会报错,提示用strcpy_s()替代,但是,这里用strcpy()替代也不行,
1 //题目:如下为类型CMyString的声明,请为该类型添加赋值运算符 2 //以下为完整代码和测试用例 3 #pragma warning(disable:4996) 4 #include <iostream> 5 #include <cstring> 6 using namespace std; 7 class CMyString { 8 public: 9 CMyString(char* pData = nullptr); 10 CMyString(const CMyString& str); 11 ~CMyString(void); 12 // operator "=" 13 CMyString& operator =(const CMyString& str); 14 void print();//用来输出测试结果 15 private: 16 char*m_pData; 17 }; 18 19 //the defination of the constructor fun 20 CMyString::CMyString(char* pData) 21 { 22 if (pData == nullptr) 23 m_pData = new char[1]; 24 m_pData[0] = '\0'; 25 } 26 27 CMyString::CMyString(const CMyString& str) 28 { 29 int len = strlen(str.m_pData); 30 m_pData = new char[len + 1]; 31 //m_pData(str.m_pData); 32 strcpy(m_pData, str.m_pData); 33 34 } 35 36 CMyString::~CMyString() 37 { 38 //delete m_pData[]; 39 delete[]m_pData; 40 } 41 42 CMyString& CMyString:: operator =(const CMyString &str) 43 { 44 if (this == &str); 45 return *this; 46 47 delete[]m_pData; 48 m_pData = nullptr; 49 50 m_pData = new char[strlen(str.m_pData) + 1]; 51 strcpy(m_pData, str.m_pData); 52 return *this; 53 54 } 55 56 void CMyString:: print() 57 { 58 cout << m_pData << endl; 59 } 60 //测试用例 61 62 void test1() 63 { 64 char* str = "Hello World!"; 65 CMyString str1(str); 66 CMyString str2; 67 str2 = str1;//call CMystring& operator=(const CMyString& str) 68 cout << " str is : " << str << endl; 69 //cout << "str2 is : " << str2.print() << endl;//没有重载<<运算符,还不能用 70 cout << "after 赋值" <<"str2 is : "<< endl; 71 str2.print(); 72 } 73 74 void test2()//赋值给自己 75 { 76 char* str = "Hello world!"; 77 CMyString str1(str); 78 str1=str1; 79 cout << " str is : " << str << endl; 80 81 cout << "after 赋值" << "str1 is : " << endl; 82 str1.print(); 83 84 } 85 86 void test3()//连续赋值 87 { 88 char* str = "Hello World!"; 89 CMyString str1(str); 90 CMyString str2, str3; 91 str3 = str2 = str1; 92 cout << "str1 is : " << endl; 93 str1.print(); 94 cout << "str2 is : " << endl; 95 96 str2.print(); 97 cout << "str3 is : " << endl; 98 str3.print(); 99 } 100 101 102 int main() 103 { 104 test1(); 105 test2(); 106 test3(); 107 system("pause"); 108 return 0; 109 }
转载于:https://www.cnblogs.com/Holly-blog/p/7586781.html
question1 赋值运算操作符相关推荐
- 读书笔记 Effective C++: 02 构造析构赋值运算
条款05:了解C++默认编写并调用的哪些函数 编译器会为class创建: 1. default构造函数(前提是:没有定义任何构造函数): 如果已经声明了一个构造函数,编译器就不会再创建default构 ...
- Python数字类型:数值运算操作符、数值运算函数、类型判断函数、类型转换函数
一.数字类型 (一)整数类型int(integer) int与数学中的整数概念一致 特点:可正可负,没有取值范围 整数有四种表示形式: 十进制,没有引导符号:10, 88,-485 二进制,以0(零) ...
- python数值运算操作符也叫做内置操作符_Python的操作符 - osc_r1gtal48的个人空间 - OSCHINA - 中文开源技术交流社区...
一.数值运算符 python提供了9个基本的数值运算符,这些运算符由编译器直接提供,所以叫做内置运算符(操作符): 运算符 功能 + 加 - 减 * 乘 / 除 % 模 ** 幂 // 整除 -i 负 ...
- python 中m op n运算_Python数字类型、数值运算操作符、数值运算函数
一.数字类型 (一)整数类型int(integer) int与数学中的整数概念一致 特点:可正可负,没有取值范围 整数有四种表示形式: 十进制,没有引导符号:10, 88,-485 二进制,以0(零) ...
- Python数值运算操作符
数值运算操作符 操作符及使用 描述 x+y 加,x与y之和 x–y 减,x与 y之差 x*y 乘,x与y之积 x/y 除,x与y之商 10/3结果是3.3333333333333335 x // y ...
- python提供了几个基本的数值运算操作符_慢步学习,二级python,数字类型及其运算...
#我要学Python# 记得曾经的老师常说,要带着问题学习. 咱继续带着二级Python编程语言的考试大纲学习. 考试大纲中考试内容分七部分,其中第一部分Python 语言基本语法元素已经学完.笔者认 ...
- 构造/析构/赋值运算--龙之介《Effective C++》实验室
条款5:了解C++默默编写并调用哪些函数 编译器可以暗自为class创建default构造函数,copy构造函数,copy assignment操作符 但是c++拒绝编译那一行赋值动作.你不会自动co ...
- Python中的数学运算操作符使用进阶
原文链接:https://www.jb51.net/article/86988.htm 这篇文章主要介绍了Python中的数学运算操作符使用进阶,也包括运算赋值操作符等基本知识的小结 Python中对 ...
- 增一赋值运算 减一赋值运算
C语言提供了两种非常有用的运算符就是增一和减一运算符 增一运算符是用两个加号来表示的 增一运算的作用使参与运算的值增加一个单位 增一和减一运算符都是一元运算,只需要一个操作数 它既可以作为前缀运算符, ...
最新文章
- leetcode--整数反转--python
- java 数据聚合_Java数据聚合问题请教?
- python用于pmc排产可以吗_生产计划员每天都在抓狂,插单、排产问题到底该怎么解决?...
- OLI 课程 Java入学考试的五道题
- javascript --- vue中简单的模板渲染
- drools 规则流_约束流–没有Drools规则语言的现代Java约束
- 系统修复对电脑的影响有哪些
- golang 最小堆排序实现
- Spring IoC、应用上下文容器层次分析
- 双管道(CreatePipe)与本地cmd.exe进程通信(附源代码及编译好的程序,免费下载)
- webstorm搜狗输入法变成繁体字
- RHCSA 知识点汇总
- D-Link DCS系列监控账号密码信息泄露
- C++ using的使用
- CRMED知识付费2.0源码 已去授权
- 【程序员的财富自由之路】开篇序
- 段永平-雪球专刊·段永平投资问答录(上册 商业逻辑篇)(一)
- 智能手机屏幕常用单位浅析
- 洛谷P3803 fft模板
- matlab雨流计数,matlab雨流计数法
热门文章
- flash作业_在线作业产品的基本构成与逻辑分解
- 利用itext包实现java报表打印_利用iText包实现Java报表打印
- java 参数类型可变_java – 具有可变类型参数的通用
- java 线程 内部_从Java中的main()内部在线程实例上运行wait()
- java 内嵌机制_[转] Java中public,private,final,static等概念的解读
- java jdbc_详解Java基础知识——JDBC
- 在线分析mysql死锁详解_记一次线上mysql死锁分析(一)
- JavaScript常用事件(1)
- linux 配置mq队列,Apache ActiveMQ 消息队列安装与配置
- 操作系统—多生产者多消费者问题