C++筆記:實現簡單string類
阿新 • • 發佈:2021-09-20
程式碼就是侯捷老師的程式碼,包括了最基礎的建構函式、拷貝建構函式和拷貝賦值函式。
String.h
#pragma once #include<string.h> #ifndef STRING_H #define STRING_H class String { public: String(const char* cstr = 0); // 建構函式 String(const String& str); //拷貝建構函式 String& operator=(const String& str); //拷貝賦值函式 ~String(); char* get_c_str() { 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'; } } inline String::~String() { delete[] m_data; // array new 一定要和array delete搭配使用 } inline String::String(const String& str) { m_data = new char[strlen(str.m_data) + 1]; strcpy(m_data, str.m_data); } inline 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; } #endif
main.cpp
#include<iostream> #include "String.h" using namespace std; int main(int argc, char* argv[]) { String s{ "Hello, World!" }; cout << s.get_c_str() << endl; }