动态内存简单字符串不会写
默认构造函数那部分看不懂
下面调用不会写了
#include
using namespace std;
class MyStr {
int m_length;
//定义int型变量m_length
char *m_buff;
//指向对象表示动态字符组
public:
MyStr(const char*val=nullptr);
//默认构造函数 没含义
~MyStr(){delete[]m_buff;}
//析构函数 释放动态字符组
int size(){return m_length;}
//创建输出函数size 返回数组长度
//辅助函数
friend ostream& operator<<(ostream &,const MyStr &);
//创建友元函数 重载<<
friend MyStr operator + (const MyStr &,const MyStr &);
//创建友元函数 重载+
private:
//静态成员函数
static int strlen(const char *ptr);
//获取长度
static void strncpy(char *dest,const char *src,int n);
//将src指向数组中前n个字符复制到dest指向的数组
};
//strlen 函数 求字符长度
int MyStr::strlen(const char *ptr){
int len =0;
//定义初始化长度len
while(ptr && *ptr++!='\0')
//'\0'指字符组结束项 (系统默认在最后加上的一项)
++len;
return len;
}
// 复制源字符组的前n个字符复制到dest
void MyStr::strncpy(char *dest,const char *src,int n){
for(int i=0;i//这里看不懂了
MyStr::MyStr(const char*val):m_length(strlen(val)),m_buff(m_length>0 ? new char[m_length]:nullptr){
strncpy(m_buff,val,m_length);
}
//重载函数<<
ostream& operator<<(ostream &os,const MyStr &s){
for(int i=0;ireturn os;
}
//重载函数+
MyStr operator + (const MyStr &s1,const MyStr &s2){
MyStr res;
res.m_length=s1.m_length+s2.m_length;
res.m_buff=new char[res.m_length];
MyStr::strncpy(res.m_buff,s1.m_buff,s1.m_length);
MyStr::strncpy(res.m_buff+s1.m_length,s2.m_buff,s2.m_length);
}
后面怎么写
请写出你第一个不懂的问题。