Toyears 2015-05-30 13:53 采纳率: 100%
浏览 2300
已采纳

关于C++构造函数生成空字符串。。。

class CString
{

char m_buff[MAXLENGTH];
public:
CString(); //构造函数1,设置为空字符串

~CString();
friend ostream& operator<<(ostream& Out, const CString& S); //输出字 符串
char operatorconst;
};
CString::CString()
{
m_buff[0]=NULL;
}

char CString::operatorconst
{
return m_buff[i];
}
ostream& operator<<(ostream& Out, const CString& S)
{
return Out<<S.m_buff<<endl;
}
CString::~CString()
{
delete[] m_buff;
}
void main()
{
CString s1;

cout << s1;

}
这是其中一段

  • 写回答

3条回答 默认 最新

  • ningto.com 2015-06-01 04:24
    关注

    // MyString.cpp : 定义控制台应用程序的入口点。
    //
    #include "stdafx.h"
    #include
    #include
    class MyString
    {
    public:
    MyString(const char str = NULL);
    MyString(const MyString &other);
    ~MyString(void);
    MyString & operator = (const MyString &other);
    int OutputStr(void);
    private:
    char *m_data;
    };
    MyString::MyString(const char *str)//普通的构造函数
    {
    if (str == NULL)
    {
    m_data = new char[1];
    *m_data = '/0';
    }
    else
    {
    int length = strlen(str);
    m_data = new char[length + 1];
    strcpy(m_data, str);
    }
    }
    MyString::MyString(const MyString &other)//拷贝构造函数
    {
    int length = strlen(other.m_data);
    m_data = new char[length + 1];
    strcpy(m_data, other.m_data);
    }
    MyString::~MyString(void)
    {
    delete [] m_data;
    }
    MyString & MyString::operator = (const MyString &other)//赋值操作
    {
    if (this == &other)
    {
    return *this;
    }
    delete [] m_data;
    int length = strlen(other.m_data);
    m_data = new char[length + 1];
    strcpy(m_data, other.m_data);
    return *this;
    }
    int MyString::OutputStr(void)
    {
    int length = 0;
    length = strlen(m_data);
    printf("the output string is : %s", m_data);
    return length;
    }
    int _tmain(int argc, _TCHAR
    argv[])
    {
    MyString str("hello, world");//进入普通构造函数
    MyString str2 = str;//初始化,进入拷贝构造函数
    MyString str3(str);//初始化,进入拷贝构造函数
    str2 = str;//赋值,进入赋值操作
    str2.OutputStr();
    //MyString *str = new MyString("hello, world");//普通构造函数
    //MyString *str2 = new MyString(*str);//拷贝构造函数
    //*str2 = *str;//赋值操作
    //str2->OutputStr();
    getchar();
    return 0;
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
  • ¥15 钢筋实图交点识别,机器视觉代码
  • ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
  • ¥50 400g qsfp 光模块iphy方案
  • ¥15 两块ADC0804用proteus仿真时,出现异常
  • ¥15 关于风控系统,如何去选择
  • ¥15 这款软件是什么?需要能满足我的需求
  • ¥15 SpringSecurityOauth2登陆前后request不一致