牛骨文教育服务平台(让学习变的简单)
博文笔记

剑指offer面试题1

创建时间:2018-10-27 投稿人: 浏览次数:545

面试题1
题目:CMYString的声明,为该类型添加复制运算符函数。

#include <cstdio>
//#include <string>
#include <cstring>

class CMyString
{
public:
	CMyString(char* pData = nullptr);
	//实例从形参到实参会调用一次复制构造函数,
	//把参数申明为引用可以提高代码效率,加const不会改变实例的状态
	//只有返回一个引用才允许连续赋值
	CMyString(const CMyString& str); 
	~CMyString(void);
	//连续赋值
	CMyString& operator = (const CMyString& str);
    
    void print();


private:
	//记住释放实例内存
	//需判断传入的参数和当前的实例(*this)是否是同一个实例;
	//如果是,一旦释放自身内存,传入参数内存也会被释放的
	char* m_pData;
	
};

CMyString::CMyString(char* pData)
{
	if(pData == nullptr)
	{
		m_pData = new char[1];
		m_pData = "";
	}
	else 
	{
		int length  = strlen(pData);
		m_pData = new char[length + 1];
		strcpy(m_pData, pData);
	}
}
CMyString::~CMyString()
{
	delete[] m_pData;
}

CMyString& CMyString::operator =(const CMyString& str)
{
	if (this == &str)
		return *this;
	delete[] m_pData;
	m_pData == nullptr;

	m_pData = new char[strlen(str.m_pData) + 1];
	 strcpy(m_pData, str.m_pData);
	return *this;

} 

void CMyString::print()
{
	printf("%s
", m_pData);
}

int main(int argc, char const *argv[])
{
	char* text = "Hello World!";
	CMyString str1(text);
	str1.print();
	CMyString str2;
	str2 = str1;
	str2.print();
	return 0;
}

用sublim 调试出现错误
In member function ‘CMyString& CMyString::operator=(const CMyString&)’:
E:0��˶˶����ѧϰ��ָoffersecondTest1OprateFunction.cpp:52:10: warning: statement has no effect [-Wunused-value]
m_pData == nullptr;
没搞明白

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。