2.2.1 如下为类型CMyString 的声明, 请为该类型添加赋值运算符函数
来源:互联网 发布:淘宝上门安装怎么设置 编辑:程序博客网 时间:2024/04/30 05:36
/*AssignmentOperator DefinitionCreated by taotao man on 2015-7-29brief: 题目:如下为类型CMyString 的声明, 请为该类型添加赋值运算符函数// 修改记录add SetA();change GetA();*/#include "stdafx.h"#include <string>class CMyString{public:CMyString(char *pData = NULL);CMyString(const CMyString& str);~CMyString(void);void Print();CMyString &operator = (const CMyString &str);private:char*m_pData;};CMyString::CMyString(char *pData){if(pData == NULL){m_pData = new char[1];}else{int length = strlen(pData);m_pData = new char[length + 1];strcpy(m_pData, pData);}}CMyString::CMyString(const CMyString &str){int length = strlen(str.m_pData);m_pData = new char[length + 1];strcpy(m_pData, str.m_pData);}CMyString::~CMyString(){delete[]m_pData;}CMyString & CMyString::operator = (const CMyString &str){if(this == &str)return *this;if(this != &str)// 考虑异常安全性的解法{CMyString strTemp(str);char *pTemp = strTemp.m_pData;strTemp.m_pData = m_pData;m_pData = pTemp;}delete []m_pData;// 释放实例m_pData的内存m_pData = NULL;m_pData = new char[strlen(str.m_pData) + 1]; strcpy(m_pData, str.m_pData);return *this;}// ====================测试代码====================void CMyString::Print(){printf("%s", m_pData);}void Test1()// 把一个CMyString 的实例赋值给另外意个实例{printf("Test1 begins:\n");char *text = "Hello world";CMyString str1(text);CMyString str2; str2 = str1;printf("The expected result is : %s.\n", text);printf("The actual result is:");str2.Print();system("pause");}void Test2()// 把一个CMyString的实例赋值给它自己{printf("Test2 begins:\n");char *text = "Hello world";CMyString str1(text);str1 = str1;printf("The expected result is : %s.\n", text);printf("The actual result is:");str1.Print();system("pause");printf(".\n");}// 连续赋值void Test3(){printf("Test3 begins:\n");char *text = "Hello world";CMyString str1(text);CMyString str2, str3;str3 = str2 = str1;printf("The expected result is: %s.\n", text);printf("The actual result is :");str2.Print();printf(".\n");printf("The expected result is: %s.\n", text);printf("The actual result is :");str3.Print();printf(".\n");system("pause");}int _tmain(int argc, _TCHAR *argv[]){// Test1();// Test2();Test3();return 0;system("pause");}
0 0
- 如下为类型CMyString的声明,请为该类型添加赋值运算符函数
- 如下为类型CMyString的声明,请为该类型添加赋值运算符函数。
- 题目: 如下为类型CMyString的声明,请为该类型添加赋值运算符函数.
- 2.2.1 如下为类型CMyString 的声明, 请为该类型添加赋值运算符函数
- 剑指offer面试题:如下为类型CMyString的声明,请为该类型添加赋值运算符函数。
- 【笔试】19、该类型添加赋值运算符函数
- 异常安全的CMyString赋值运算符函数重载
- 为string类添加一个赋值运算符函数
- 为需要动态分配内存的类声明一个拷贝构造函数与一个赋值运算运算符
- 为需要动态分配内存的类声明一个拷贝构造函数与一个赋值运算运算符
- 当函数的参数为int类型 调用该函数是给该参数赋值null会报空指针异常nullpointexception
- 为结构体类型赋值的操作
- 赋值运算符函数的返回值类型详解
- 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少.请编程实现。提示:可声明1个数组 按照规律为每1个元素赋值.
- 剑指Offer----面试题一:为类添加赋值运算符函数
- 位运算训练01—请编写一个c函数,该函数给出一个字节中被置为1的位的个数
- 被调用函数内部的局部变量声明为static类型
- 两个类型为varchar的字段保存的时间,进行时间差运算。运算符无效.运算符为subtract,类型为varchar
- 蓝光ISO格式
- OC学习:OC_中基本数据类型和结构体的封装(NSNumber继承与NSValue)
- 调整UI颜色时注意事项
- 临江仙—杨慎
- Jquery easyui 的datagrid 每行增加操作链接-修改
- 2.2.1 如下为类型CMyString 的声明, 请为该类型添加赋值运算符函数
- "由于应用程序配置不正确,应用程序未能启动" VS2008 Release /MD编译
- Node.js是什么
- 换位思考多周期约束
- 将word转换成PDF的完美方法
- iOS UICollectionView简单使用
- 欢迎使用CSDN-markdown编辑器
- STM32 TFT学习笔记——刷屏
- 社説 20150729 「チーム学校」 いじめ解決に専門家の力を