文档章节

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
海淀
程序员
私信 提问
C++学习笔记(二)

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

初雪之音
2016/01/07
60
0
JavaScript操作符 - 适用于初学者的JavaScript教程

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

芒果web
2017/04/25
0
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
FreeBASIC学习笔记——第03章 运算符与表达式

3.1 赋值运算 FreeBASIC的赋值运算除了“=”以外,还有类似C语言的运算后赋值的操作,具体运算符及其说明如表3-1所示。 表3-1 赋值运算符及说明 3.2 算术运算 算术运算就是加、减、乘、除等运...

rainheart311
2017/12/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

NEO 节点介绍

全节点(full nodes)是存储 NEO 区块链全部数据的节点,通过 P2P 的方式与区块链网络连接,在区块链网络中,所有的全节点都是平等的,既充当客户端又充当服务器。 NEO 有两个全节点程序: ...

NEO-FANS
13分钟前
0
0
内网穿透大杀器--EarthWorm

0x00 前言 如果感觉本文对你有帮助,请在文章末尾点个赞,谢谢表哥们支持! 当你在内网渗透,并且拿下一台机器的权限时,你是不是觉得已经算是一次完整的渗透了? 不来一次内网漫游,渗透是不...

刀剑如梦
18分钟前
2
0
PiggyMetrics分布式框架

https://github.com/sqshq/PiggyMetrics

丁建祥
19分钟前
0
0
零距离接触阿里云时序时空数据库TSDB

概述 最近,Amazon新推出了完全托管的时间序列数据库Timestream,可见,各大厂商对未来时间序列数据库的重视与日俱增。 阿里云TSDB是阿里巴巴集团数据库事业部研发的一款高性能分布式时序时空...

阿里云云栖社区
28分钟前
4
0
OkHttpClient封装

import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Map; import java.util.TreeMap; import java.util.Map.Entry; import o......

尘叙缘
30分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部