单例模式 涉及到 智能指针,内存中的堆和栈
拷贝构造函数 涉及到const reference传递 以及空间大小等
代码如下:
/*手动实现一个string的构造函数、拷贝构造函数以及拷贝assignment函数*/
#include <iostream>
#include <cstring>
using namespace std;
class MyString
{
public:
//MyString(char *pdata);
MyString(char *pdata = NULL);
~MyString();
MyString(const MyString& str);
MyString& operator = (const MyString& str);
void Print();
private:
char *m_pdata;
};
//char* MyString::m_pdata = NULL;
//construct function
MyString::MyString(char *pdata)
{
if(!pdata)
{
m_pdata = new char[1];
m_pdata[0] = '\0';
}
else
{//
int length = strlen(pdata);
m_pdata = new char[length +1];
strcpy(m_pdata, pdata);
}
//cout<< m_pdata<<endl;
}
// 析构
MyString::~MyString()
{
delete[] m_pdata;
}
//copy 构造
MyString::MyString(const MyString& str)
{
int length = strlen(str.m_pdata);
m_pdata = new char[lengt