博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面试题1:赋值运算符函数
阅读量:4956 次
发布时间:2019-06-12

本文共 2665 字,大约阅读时间需要 8 分钟。

 

/*******************************************************************Copyright(c) 2017, htfengAll rights reserved.*******************************************************************///==================================================================// 《剑指Offer——名企面试官精讲典型编程题》代码//  作者:何海涛//  C++//==================================================================// 面试题1:赋值运算符函数// 题目:如下为类型CMyString的声明,请为该类型添加赋值运算符函数。#include
#include
using namespace std;// ===================创建类=====================template
class CMyString {public: CMyString(T* pData = nullptr); CMyString(const CMyString
& str); ~CMyString(void); CMyString
& operator = (const CMyString
& str); void print();private: T* m_pData;};template
CMyString
::CMyString(T* pData) { if (pData == nullptr) { m_pData = new T[1]; m_pData[0] = '\0'; } else { int length = strlen(pData); m_pData = new T[length + 1]; strcpy_s(m_pData, length + 1, pData); }}template
CMyString
::CMyString(const CMyString
& str) { int length = strlen(str.m_pData); m_pData = new T[length + 1]; strcpy_s(m_pData, length+1, str.m_pData);}template
CMyString
::~CMyString() { delete[] m_pData;}template
CMyString
& CMyString
::operator=(const CMyString
& str) { if (this == &str) return *this; delete[] m_pData; m_pData = nullptr; int length = strlen(str.m_pData); m_pData = new T[length + 1]; strcpy_s(m_pData, length + 1, str.m_pData); return *this;}//==================测试代码===================template
void CMyString
::print() { cout << m_pData << endl;}// 把一个CMyString的实例赋值给另一个实例void test1() { cout << "把一个CMyString的实例赋值给另一个实例:" << endl; char text[] = "hello test1"; char *astr = text; CMyString
str1(astr); CMyString
str2; str2 = str1; cout << "The expected result is: " << text << endl; cout << "The actual result is:"; str2.print(); cout << endl;}//把一个CMyString的实例赋值给自己void test2() { cout << "把一个CMyString的实例赋值给自己:" << endl; char text[] = "hello test2"; char *astr = text; CMyString
str1(astr); str1 = str1; cout << "The expected result is: " << text << endl; cout << "The actual result is:"; str1.print(); cout << endl;}// 连续赋值void test3() { cout << "连续赋值:" << endl; char text[] = "hello world!"; char *astr = text; CMyString
str1(astr); CMyString
str2, str3; str3 = str2 = str1; cout << "The expected result is: " << text << endl; cout << "The actual result is:"; str2.print(); cout << "The expected result is: " << text << endl; cout << "The actual result is:"; str3.print(); cout << endl;}int main() { test1(); test2(); test3(); system("pause"); return 0;}

转载于:https://www.cnblogs.com/htfeng/p/9931736.html

你可能感兴趣的文章
Servlet学习-会话技术session
查看>>
thinkphp之cookie操作
查看>>
对 Linux 新手非常有用的 20 个命令
查看>>
QT设置标签字体大小和颜色
查看>>
codevs 1332 上白泽慧音
查看>>
XML之DOM解析文档 Day24
查看>>
org.hibernate.AnnotationException: No identifier specified for entity:
查看>>
转:php 5.5源码安装全过程
查看>>
结对编程总结by黄柏欣李斌
查看>>
序列号的设计,不重复的实现一机一码
查看>>
苹果充电器USB端的识别电阻的设置
查看>>
elasticsearch的模糊查询
查看>>
贪心、分治基础
查看>>
Eqs - poj 1840(hash)
查看>>
JavaScript把项目本地的图片或者图片的绝对路径转为base64字符串、blob对象在上传...
查看>>
关于Tag的详细介绍
查看>>
查看更多
查看>>
HDU 3488 Tour【多个环的并】
查看>>
Muduo阅读笔记---net(三)
查看>>
CF940F Machine Learning
查看>>