摘自《C++编程思想》
/* * SimpleString.h * * Created on: 2014年7月4日 * Author: Administrator */ #ifndef SIMPLESTRING_H_ #define SIMPLESTRING_H_ class SimpleString { public: SimpleString(); SimpleString(const char*); SimpleString(SimpleString&); virtual ~SimpleString(); const char *string() const; SimpleString& operator=(const char*); SimpleString& operator=(const SimpleString&); void print_str(); private: char *_string; void duplicate(const char*); }; #endif /* SIMPLESTRING_H_ */
/* * SimpleString.cpp * * Created on: 2014年7月4日 * Author: Administrator */ using namespace std; #include "SimpleString.h" #include "string.h" #include<iostream> SimpleString::SimpleString() { // TODO Auto-generated constructor stub _string = 0; } SimpleString::SimpleString(const char *s) { // TODO Auto-generated constructor stub duplicate(s); } SimpleString::SimpleString(SimpleString &s) { // TODO Auto-generated constructor stub duplicate(s._string); } SimpleString::~SimpleString() { // TODO Auto-generated destructor stub delete[] _string; } void SimpleString::duplicate(const char *s) { if (s) { _string = new char[strlen(s) + 1]; strcpy(_string, s); } else { _string = 0; } } SimpleString& SimpleString::operator =(const char *s) { char *pre_string = _string; duplicate(s); delete[] pre_string; return *this; } SimpleString& SimpleString::operator =(const SimpleString &s) { if (this == &s) { return *this; } else { return operator =(s._string); } } void SimpleString::print_str() { if (_string) { cout << _string << endl; } else { cout << "Warning: _string is null!" << endl; } }
#include "SimpleString.h" int main(int argc, char **argv) { SimpleString a; SimpleString b("hello world"); SimpleString c(b); a.print_str(); b.print_str(); c.print_str(); a = b; c = "you can do it!"; a.print_str(); b.print_str(); c.print_str(); return 0; }
Warning: _string is null! hello world hello world hello world hello world you can do it!
C++实现SimpleString,布布扣,bubuko.com
原文地址:http://blog.csdn.net/sg131971/article/details/36897715