C++赋值函数一些考虑

原创 2016年08月29日 22:58:45
// Primary programmer use this way
CMyString & CMyString::operator=(const CMyString & str) 
{
	if(this == &str)
		return *this;
	delete [] m_pData;
	m_pData = NULL;
	/*
	* Here may be failed. If this step failed, and next step will
	* failed too. And the pointer m_pData will not point to the
	* original space it will point to NULL. It's so easily lead to crashes.
	*/
	m_pData = new char[strlen(str.m_pData) + 1];
	strcpy(m_pData, str.m_pData);
	return *this;	
}

// The better way
CMyString & CMyString::operator=(const CMyString & str)
{
	if(this != &str)
	{
		/*
		* strTemp is local variable just in scope of "if", so when 
		* program run out of the scope of "if", strTemp will call
		* destructor free the area that strTemp.m_pData point at.
		*/
		CMyString strTemp(str); 
		char *strTemp = strTemp.m_pData;
		/*
		 * so the memory where m_pData point at will been free
		 * by strTemp.m_pData with program run out of the scope
		 * of "if"
		 */
		strTemp.m_pData = m_pData; 
		m_pData = pTemp;
	}
	return *this;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

C++拷贝构造函数和赋值操作

  • 2012年01月10日 13:51
  • 3KB
  • 下载

Item 35:考虑虚函数的其他替代设计 Effective C++笔记

Item 35: Consider alternatives to virtual functions. 比如你在开发一个游戏,每个角色都有一个healthValue()方法。很显然你应该把...
  • yangjvn
  • yangjvn
  • 2015年09月25日 11:23
  • 798

《Effective C++》:条款35:考虑virtual函数以外的其他选择

virtual函数在派生中经常用到,在遇到一些问题时用virtual函数没问题,但是有时候我们应该思考一下是否有替代方案,以此来拓宽我们的视野。...

C++中的函数重载中为什么不考虑返回值类型?

1. 问题描述 函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。那为什么不可以是函数名相同,参数列表相同,函数的返回值不同呢? 2. ...

Effective C++:条款25:考虑写出一个不抛异常的swap函数

(一) 缺省情况下swap动作可由标准程序库提供的swap算法完成: namespace std { template void swap(T& a, T& b) { ...

《Effective C++》条款25:考虑写出一个不抛异常的swap函数

swap是两个元素交换的函数,在STL中也有对应的实现,其基本实现为:namespace std{ template void swap(T& a, T& b){ T ...

《Effective C++》item25:考虑写出一个不抛异常的swap函数

std::swap()是个很有用的函数,它可以用来交换两个变量的值,包括用户自定义的类型,只要类型支持copying操作,尤其是在STL中使用的很多,例如: [cpp] view plai...

Effective C++ Item 25 考虑写出一个不抛异常的swap函数

经验:当std::swap对你的类型效率不高时,提供一个swap成员函数,并确定这个函数不抛出异常 示例: stl里的swap算法 namespace std{ template void swa...
  • zhsenl
  • zhsenl
  • 2014年07月09日 10:39
  • 621

boj problem 1331 思路:快排分块 按块查找 问题:全局数组时可以定义到500W的 main函数下的数组不行~ 另外c语言比c++快 TLE可以考虑C~~具体原因待解决

Arsenal与水杯之间的故事Submit: 1169   Accepted:189Time Limit: 1000MS  Memory Limit: 65535KDescription时间:某一天;...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++赋值函数一些考虑
举报原因:
原因补充:

(最多只允许输入30个字)