为什么跑不起来啊,为什么总是报错呢应该怎么修改


#include 
class hstring
{
private:
    unsigned short usmlen;   //新建的内存长度
    char* cstr;
    unsigned short uslen;   //字符串长度
    unsigned short getlength(const char* str) const;
    void copystr(char* dest, const char* source);
public:
    hstring::hstring(const hstring& str);
    hstring(const char* _str);
    hstring& operator= (const hstring& str);
    char* getstr()
    {
        return cstr;
    }
    hstring();
};
hstring::hstring()
{
    usmlen = 0x32;
    uslen = 0;
    cstr = new char[usmlen];
}
void hstring::copystr(char* dest, const char* source)
{
    unsigned short len = getlength(source);
    if (len > usmlen)
    {
        cstr = new char[len];   //重新分配内存
        usmlen = len;
    }
    memcpy(cstr, source, len);
    uslen = len;
}
hstring::hstring(const char* _str)
{
    copystr(cstr,_str);
}
hstring::hstring(const hstring& str)
{
    copystr(cstr, str.cstr);
}
unsigned short hstring::getlength(const char* str) const
{
    unsigned short len{};
    for (;str[len++];)
        return len;
}
hstring& hstring::operator=(const hstring& str)
{
    copystr(cstr, str.cstr);
    return *this;
}
int main()
{
    char str[]{ "1234567890aaaaa" };
    hstring hstr(str);
    str[0] = 0;
    std::cout << hstr.getstr();
    system("pause");
}
这段程序为什么跑不起来啊,为什么总是报错呢应该怎么修改,求高手解答

学编程要会调试,不能靠猜
不要写好几百行代码一起执行
一点一点放上去,没问题再继续
报错好好看报什么错,根据错误提示修改