请帮我理解这段代码

Please help me understand this code

本文关键字:代码 段代码      更新时间:2023-10-16
    #include<iostream>
    #include<string.h>
    using namespace std;
class MyString
{
private:
    char *m_pchString;
    int m_nLength;
public:
    MyString(const char *pchString="")          // explain this
    {
        m_nLength = strlen(pchString) + 1;
        m_pchString = new char[m_nLength];       // explain this
        strncpy(m_pchString, pchString, m_nLength);
        m_pchString[m_nLength-1] = '';
    }
    ~MyString()  
    {
        delete[] m_pchString;
        m_pchString = 0;
    }
    char* GetString() { return m_pchString; }    // explain this
    int GetLength() { return m_nLength; }
};

 int main()
 {
   MyString cMyName("Alex");
   cout << "My name is: " << cMyName.GetString() << endl;
   return 0;
 }

为什么在这个....中使用new操作符我理解它的大部分,但我很困惑为什么一个字符指针分配一个数组使用新的操作符....?这是一个c++代码.....

操作符new(实际上是new[] - operator)用于获取具有m_nLength元素的char数组。析构函数中的delete[]操作符用于释放内存

MyString(const char *pchString="") 

MyString的构造函数,参数[可选]类型为char*,因此MyString str;将有效。

m_pchString = new char[m_nLength];

m_pchString是一个原始指针。在这个实现中,它指向garbage address(?)(不太确定,因为在c++编译器中,指针不会初始化为NULL)。它需要在堆上分配第一个资源。如果处理不当,使用起来会很危险。

char* GetString() { return m_pchString; }

它返回m_pchString的基址,这样您就可以访问m_pchString指向的下一个地址,并在找到0时停止。