实现要实现:构造,析构,拷贝构造,赋值的功能
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_='\0'; } //有参的构造函数 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; } };