String类的实现过程——构造函数、拷贝构造函数、拷贝赋值函数和析构函数

it2023-11-18  81

#include "stdafx.h" #include <iostream> using namespace std; 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; }; String::String(const char* cstr) { if (cstr) { m_data = new char[strlen(cstr) + 1]; strcpy(m_data, cstr); } else { m_data = new char[1]; *m_data = '\0'; } } String::~String() { delete[] m_data; } String::String(const String& str) { m_data = new char[strlen(str.m_data) + 1]; strcpy(m_data, str.m_data); } String& String::operator=(const String& str) { if (this == &str) //自我检测 return *this; delete[] m_data; //先销毁原有的指针 m_data = new char[strlen(str.m_data) + 1]; //重新分配内存 strcpy(m_data, str.m_data); //拷贝 return *this; }

以String类为例,复习了一个类的构造函数、拷贝构造函数、拷贝赋值函数和析构函数的实现过程。

最新回复(0)