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


浙公网安备 33010602011771号