1. 程式人生 > 其它 >C++筆記:實現簡單string類

C++筆記:實現簡單string類

程式碼就是侯捷老師的程式碼,包括了最基礎的建構函式、拷貝建構函式和拷貝賦值函式。

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;
}