文档章节

oral_quiz->#为类型添加赋值运算符#

貉子
 貉子
发布于 2014/06/03 11:44
字数 254
阅读 32
收藏 0
//AssignmentOperator.cpp(little changed)
#include "std.h"

class CMyString {
public:
	CMyString(char* pData = NULL);
	CMyString(const CMyString& str);
	~CMyString(void);

	CMyString& operator = (const CMyString& str);

	void Print();

private:
	char* m_pData;
};

CMyString::CMyString(char* pData) {
	if(pData == NULL) {
		m_pData = new char[1];
		m_pData[0] = '\0';
	}
	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) {
		CMyString strTemp(str);

		char* pTemp = strTemp.m_pData;
		strTemp.m_pData = m_pData;
		m_pData = pTemp;
	}

	return *this;
}

// =================测试代码==================
void CMyString::Print() {
	printf("%s", m_pData);
}

void Test1() {
	printf("Test1 begins:\n");

	char* text = "Nicholas";

	CMyString str1(text);
	CMyString str2;
	str2 = str1;

	printf("The expected result is: %s.\n", text);
	printf("The actual result is: ");
	str2.Print();
	printf(".\n");
}

//赋值给自己
void Test2() {
	printf("Test2 begins:\n");

	char* text = "Nicholas";

	CMyString str1(text);
	str1 = str1;

	printf("The expected result is: %s.\n", text);
	printf("The actual result is: ");
	str1.Print();
	printf(".\n");
}

//连续赋值
void Test3() {
	printf("Test3 begins:\n");

	char* text = "Nicholas";

	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");
}

int _tmain(int argc, _TCHAR* argv[]) {
	Test1();
	Test2();
	Test3();

	return 0;
}



© 著作权归作者所有

共有 人打赏支持
貉子
粉丝 9
博文 94
码字总数 33240
作品 0
海淀
程序员
JavaScript操作符 - 适用于初学者的JavaScript教程

  操作符是执行某种数学,逻辑或赋值操作的符号。在某些情况下,有助于缩短代码(我们将在本章中看到)。      让我们看一个基于操作符的简单示例   2 + 2(这里+是加法运算符,2,2...

芒果web
2017/04/25
0
0
C++学习笔记(二)

面试题 如下为类型CMyString的声明,请为该类型添加赋值运算符函数。 class CMyString{public: CMyString(char pData = NULL); CMyString(const CMyString& str); ~CMyString(void);private:......

初雪之音
2016/01/07
60
0
Kotlin学习(十七): 运算符重载

日本编程丛书-图片源于网络 在前面写了关于集合和范围的内容,里面包括了一点运算符重载的内容,在这里我们来详细了解运算符重载的知识,内容参考《Kotlin实战》(Kotlin in Action)。 什么...

叫我旺仔
2017/11/19
0
0
python--基本数据类型

python基本数据类型** 1.输入与输出 print + '字符串...' ##打印字符串 raw_input输入的内容为字符类型; input输入的内容为数值类型。 2.变量 ##- 变量是内存中的一块区域。 ##- 变量的命名:...

cuijb0221
2017/07/13
0
0
oral_quiz->#IsPopOrder#

#include <stdio.h> include <stack> include <exception> bool MyIsPopOrder(int InSeq, int OutSeq, int length) {if(InSeq == NULL || OutSeq == NULL || length <= 0)return false; std:......

貉子
2014/06/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

20.27 分发系统介绍~ 20.30 expect脚本传递参数

分发系统介绍分发系统-expect讲解(也就是一个分发的脚本)场景:业务越来越大,网站app,后端,编程语言是php,所以就需要配置lamp或者lnmp,最好还需要吧代码上传到服务器上;但是因...

洗香香
29分钟前
1
0
设计一个百万级的消息推送系统

前言 首先迟到的祝大家中秋快乐。 最近一周多没有更新了。其实我一直想憋一个大招,分享一些大家感兴趣的干货。 鉴于最近我个人的工作内容,于是利用这三天小长假憋了一个出来(其实是玩了两...

crossoverJie
35分钟前
1
0
软件架构:5种你应该知道的模式

Singleton(单例模式)、仓储模式(repository)、工厂模式(factory)、建造者模式(builder)、装饰模式(decorator)……大概每个上课听讲的程序员都不会陌生——软件的设计模式为我们提供...

好雨云帮
47分钟前
2
0
OSChina 周二乱弹 —— 这只是一笔金钱交易

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲《暮春秋色》- 窦唯 / 译乐队 《暮春秋色》- 窦唯 / 译乐队 手机党少年们想听歌,请使劲儿戳(这里) @我没有抓狂:跨服聊...

小小编辑
58分钟前
739
16
df命令、du命令 、磁盘分区

9月25日任务 4.1 df命令 4.2 du命令 4.3/4.4 磁盘分区 4.1、命令 :df #磁盘空间使用情况 [root@zgxlinux-02 ~]# df 按字节显示 1000Byte=1KB 1000KB=1MB 1000MB=1GB ...

zgxlinux
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部