• 实现一个string类


    实现要实现:构造,析构,拷贝构造,赋值的功能

    1. 提供构造函数 string(), string(const string & str),string(const  char * str), 

    2. 析构函数: ~ string()

    3. 成员函数(重载赋值函数):string &operator=(const string & str); 利用已有的string对象赋值

                                                      string & operator=(const char * str);// 直接用字符串赋值用char * 实现;

    (返回引用,返回对象本身。 传入参数const    & 常量引用,传入本身不能改)

    4. 成员函数(处理字符串的成员函数):

                          size_t size() const; //返回常量

                          void swap(string & str);//交换两个字符串

    5. 成员函数(操作符重载):

    。。。。

    #include <iostream>
    #include <utility>
    #include<stdio.h>
    #include <string.h>
    using namespace std;
    
    class String{
    
    private:
        char * data_;
    public:
        size_t size()const
        {
            return strlen(data_);
        }
        const char * c_str() const{
            return data_;
        }
        //无参的构造函数
        String():data_(new char[1])//初始化类的成员data_,为初始化列表的方式。
        {
            //初始化列表也可以表示为
            // data_=new char[1];
            *data_='';
        }
        //有参的构造函数
        String(const char *str) :data_(new char[strlen(str)+1])
    // strlen(str)必须为常量; { strcpy(data_,str); } String(
    const String & s):data_(new char[s.size()+1]) { strcpy(data_,s.c_str());// 有一个值为const } //析构函数 ~String () { delete[] data_; } //函数返回引用返回的是对象本身 String& operator=(String s) { swap(data_,s.data_); return *this; } };
  • 相关阅读:
    adb devices检测不到夜神模拟器
    adb devices检测不到夜神模拟器
    adb devices检测不到夜神模拟器
    epoll里面mmap释疑
    epoll里面mmap释疑
    epoll里面mmap释疑
    epoll里面mmap释疑
    Redis数据迁移的三个方法
    Redis数据迁移的三个方法
    MySQL:由USE DB堵塞故障引发的思考
  • 原文地址:https://www.cnblogs.com/fanhaha/p/7148591.html
Copyright © 2020-2023  润新知