文档章节

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

貉子
 貉子
发布于 2014/06/03 11:44
字数 254
阅读 31
收藏 0
点赞 0
评论 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++ Primer 学习笔记(第四章:表达式)

C++ Primer 学习笔记(第四章:表达式) [TOC] 4.1 基础 左值和右值: 当一个对象被用作右值的时候,用的是对象的值(内容);当对象被用作左值的时候,用的是对象的身份(在内存中的位置)。...

ShawnLue ⋅ 2015/08/20 ⋅ 0

JavaScript操作符 - 适用于初学者的JavaScript教程

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

芒果web ⋅ 2017/04/25 ⋅ 0

C++学习笔记(二)

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

初雪之音 ⋅ 2016/01/07 ⋅ 0

Kotlin学习(十七): 运算符重载

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

叫我旺仔 ⋅ 2017/11/19 ⋅ 0

bash 'read' VS Ksh 'read'

bash 'read' VS Ksh 'read' 看一些ksh的代码的时候,经常看到使用read来给变量赋值的写法,但是bash脚本中却鲜见这种写法,猜测是有区别。测试如下: Oracle Linux 6.6 Bash AIX 5.3 Ksh 很明...

N0body ⋅ 2016/08/18 ⋅ 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

python--基本数据类型

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

cuijb0221 ⋅ 2017/07/13 ⋅ 0

FreeBASIC学习笔记——第03章 运算符与表达式

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

rainheart311 ⋅ 2017/12/13 ⋅ 0

.NET中可空值类型实现原理

为了让.Net中的值类型可以赋值为null,微软特地添加了Nullable类型,也可简写为T?。但是Nullable自身是结构体,也是值类型,那么它是如何实现将null赋值给值类型的呢? 下面通过自定义一个可...

雪飞鸿 ⋅ 2017/03/18 ⋅ 0

第五章 python变量与运算符

5.1 变量 5.1.1 什么时变量 变量:名字,可以将值赋值给变量,使用=赋值,如 >>>a=1#将数值1赋值给变量a >>>name='mike' >>>degree= ['优','良','中','差'] 注意:Python中变量是没有类型区......

九日_Reedo ⋅ 2017/11/27 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 41分钟前 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 59分钟前 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 今天 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

推荐:并发情况下:Java HashMap 形成死循环的原因

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历...

码代码的小司机 ⋅ 昨天 ⋅ 1

聊聊spring cloud gateway的RetryGatewayFilter

序 本文主要研究一下spring cloud gateway的RetryGatewayFilter GatewayAutoConfiguration spring-cloud-gateway-core-2.0.0.RC2-sources.jar!/org/springframework/cloud/gateway/config/G......

go4it ⋅ 昨天 ⋅ 0

创建新用户和授予MySQL中的权限教程

导读 MySQL是一个开源数据库管理软件,可帮助用户存储,组织和以后检索数据。 它有多种选项来授予特定用户在表和数据库中的细微的权限 - 本教程将简要介绍一些选项。 如何创建新用户 在MySQL...

问题终结者 ⋅ 昨天 ⋅ 0

android -------- 颜色的半透明效果配置

最近有朋友问我 Android 背景颜色的半透明效果配置,我网上看资料,总结了一下, 开发中也是常常遇到的,所以来写篇博客 常用的颜色值格式有: RGB ARGB RRGGBB AARRGGBB 这4种 透明度 透明度...

切切歆语 ⋅ 昨天 ⋅ 0

CentOS开机启动subversion

建立自启动脚本: vim /etc/init.d/subversion 输入如下内容: #!/bin/bash## subversion startup script for the server## chkconfig: 2345 90 10# description: start the subve......

随风而飘 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部