zoukankan      html  css  js  c++  java
  • 侯捷老师的C++代码:基于对象的类别之二带指针的成员函数 Mystring实现

    //makefile
    cc = g++
    prom = mystring
    obj = mystring.o
    $(prom):$(obj)
        rm -rf *.exe;
        $(cc) -o $(prom) $(obj)
    //头文件
    #ifndef __MYSTRING__
    #define __MYSTRING__
    
    
    class String{
        public:
            String(char* cstr = nullptr);
            String(const String& str);
            String& operator=(const String& str);
            ~String();
            char* get_c_str() const {return m_data;}
        private:
            char* m_data;
    };
    
    #include<iostream>
    #include<cstring>
    using namespace std;
    inline String::String(char* cstr)
    {
        if(cstr){
            m_data = new char[strlen(cstr) + 1];
            strcpy(m_data, cstr);
        }
        else{
            m_data = new char[1];
            *cstr = '';
        }
    
        
    }
    
    inline String::~String()
    {
        delete[] m_data;
    }
    
    
    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;
    }
    
    
    ostream& operator<<(ostream& os, const String& str)
    {
        os << str.get_c_str();
        return os;
    }
    
    #endif
    //定义文件
    #include"mystring.h"
    
    int main()
    {
        String s1((char*)("Hello "));
        cout << s1 << endl;
        String s2(s1) ;
        cout << s2 << endl;
        String s3(s1);
        s3 = s2;
        cout << s3 << endl;
        return 0;
    }
  • 相关阅读:
    ## js 性能 (未完。。。)
    React 创建元素的几种方式
    Json 与 javascript 对象的区别
    js 基本数据类型
    第十三章 事件
    第十二章 DOM2和DOM3
    第十一章 DOM扩展
    第十章 DOM
    第八章 BOM
    第七章 函数表达式
  • 原文地址:https://www.cnblogs.com/fourmi/p/12494677.html
Copyright © 2011-2022 走看看