class String
{
public:
String(const char* cstr = 0); //构造函数
String(const String& str); // 拷贝构造函数
String& operator=(const String& str) //拷贝赋值
~String(); //析构函数
char* get_c_str() const {
return m_data}; //内联成员函数
private:
char* m_data;
}
inline
String::String(const char* cstr = 0) //传入空字符串
{
if(cstr) {
m_data = new char[strlen(cstr)+1]; //new分配一个足够空间
strcpy(m_data,cstr);
}
else {
//未指定初值
m_data = new char[1]; //为了存放\0 new分配一个数组空间
*m_data = '\0';
}
}
inline
String::~String() // 析构函数
{
delete[] m_data; //释放动态分配的内存
}
{
String s1(),
String s2("hello");
String* p = new String("hello"); //动态创建一个字符串
delete p;
}
inline
String::Stirng(const String& str)
{
m_data = new char[ strlen(str.m_data) + 1] // 创建空间
strcpy(m_data, str.m_data); //内容传递
}
{
String s1("hello"); //直接取另一个object的private(兄弟之间互为friend)
String s2(s1);
// String s2 = s1;
}
inline
String& String::operator=(const operator& str)
{
if (this == &str)
return *this;
delete[] m_data; //1
m_data = new char[ strlen(str.m_data) + 1]; //2
strcpy(m_data, str.m_data); //3
return *this;
}
//赋值操作
{
String s1("hello")
String s2(s1);
s2 = s1; //1赋值到2上
}