zoukankan      html  css  js  c++  java
  • 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 = '';
    	}
    }
    
    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;
    }
    

  • 相关阅读:
    轻轻松松看懂Spring AOP源码
    centos7安装openjdk8
    使用fiddler做弱网测试
    测试术语-好东西要跟大家一块分享-2
    测试思想-好东西与大家分享-1
    session、token、cookie的区别
    接口测试和功能测试的区别
    常见bug解析-移动端
    接口测试的简介
    软件测试基本理论
  • 原文地址:https://www.cnblogs.com/zyb993963526/p/15312910.html
Copyright © 2011-2022 走看看