C++三大函数:
- 拷贝构造函数
- 拷贝赋值函数
- 析构函数
设计一个CMyString类,实现上述三大函数,手撕代码如下:
#pragma once
#pragma warning(disable:4996)
#include <iostream>
#include <cstring>
class CMyString
{
public:
CMyString(const char* pStr);
CMyString(const CMyString& str);
CMyString& operator = (const CMyString& str);
~CMyString();
public:
char* GetData() const;
private:
char* m_pData;
};
//构造
//默认构造
CMyString::CMyString(const char* pStr):m_pData(NULL)
{
if (pStr)
{
m_pData = new char[strlen(pStr) + 1];
//std::cout << "len: " << strlen(pStr) << std::endl;
strcpy(m_pData, pStr);
}
else
{
m_pData = new char[1];
*m_pData = '\0';
}
}
//拷贝构造
CMyString::CMyString(const CMyString& str)
{
m_pData = new char[strlen(str.GetData()) + 1];
strcpy(m_pData, str.GetData());
}
//拷贝赋值 重载=操作符
CMyString& CMyString::operator=(const CMyString& str)
{
if (str.GetData()

最低0.47元/天 解锁文章
637

被折叠的 条评论
为什么被折叠?



