请为CMyString类型编写构造函数、copy构造函数、析构函数和赋值运算符函数。

如下为类型CMyString的声明,请为该类型编写构造函数、copy构造函数、析构函数和赋值运算符函数。
 1 class CMyString
 2 {
 3 public:
 4     CMyString(const char* pData = nullptr);
 5     CMyString(const CMyString& str);
 6     ~CMyString(void);
 7  
 8     CMyString& operator = (const CMyString& str);
 9  
10     void Print();
11  
12 private:
13     char* m_pData;
14 };

完整代码如下:

 1 #include<cstring>
 2 #include<cstdio>
 3  
 4 using namespace std;
 5  
 6 class CMyString
 7 {
 8 public:
 9     CMyString(const char* pData = nullptr);
10     CMyString(const CMyString& str);
11     ~CMyString(void);
12  
13     CMyString& operator = (const CMyString& str);
14  
15     void Print();
16  
17 private:
18     char* m_pData;
19 };
20  
21 CMyString::CMyString(const  char *pData)
22 {
23     if (pData == nullptr)
24     {
25         m_pData = new char[1];
26         m_pData[0] = '\0';
27     }
28     else
29     {
30         int length = strlen(pData);
31         m_pData = new char[length + 1];
32         strcpy_s(m_pData,length+1, pData);
33     }
34 }
35  
36 CMyString::CMyString(const CMyString &str)
37 {
38     int length = strlen(str.m_pData);
39     m_pData = new char[length + 1];
40     strcpy_s(m_pData,length+1, str.m_pData);
41 }
42  
43 CMyString::~CMyString()
44 {
45     delete[] m_pData;
46 }
47  
48 CMyString& CMyString::operator = (const CMyString& str)
49 {
50     if (&str != this)
51     {
52         CMyString strTemp(str);
53         char* pTemp = strTemp.m_pData;
54         strTemp.m_pData = m_pData;
55         m_pData = pTemp;
56     }
57  
58     return *this;
59 }
60  
61 void CMyString::Print()
62 {
63     printf("%s", m_pData);
64 }

 

posted @ 2018-11-26 23:27  shfanzie  阅读(380)  评论(0编辑  收藏  举报