您的位置:首页 > 其它

自己动手封装一个string类

2011-11-27 00:29 337 查看
通常c++笔试题里会要求封装一个string类,这里面的确考查了对c++应用的能力,我这个人有个不好就是记性不怎么好,所以要靠记录下来给以后用到的时候做个参考.

#include <string.h>

class string {

char *str;

int size;

public:

string() {

size = 0;

str = NULL;

}

virtual ~string() {

empty();

}

string(const char *s) {

if (s) {

size = strlen(s)+1;

str = (char *)malloc(size);

strcpy(str, s);

} else {

size = 0;

str = NULL;

}

}

string(const string& s) {

if (s.str) {

size = strlen(s.str)+1;

str = (char *)malloc(size);

strcpy(str, s.str);

} else {

size = 0;

str = NULL;

}

}

void empty(void) {

if (str) {

size = 0;

free(str);

str = NULL;

}

}

string& operator=(const string& s) {

if (this != &s) {

empty();

if (s.str) {

size = strlen(s.str)+1;

str = (char *)malloc(size);

strcpy(str, s.str);

}

}

return *this;

}

string operator+(const string& s) const {

if (str && s.str) {

string _s;

_s.size = strlen(str) + strlen(s.str) + 1;

_s.str = (char *)malloc(size);

strcpy(_s.str, str);

strcat(_s.str, s.str);

return _s;

} else {

return str ? str : s.str;

}

}

bool operator==(const string& s) const {

if (str && s.str) {

return !strcmp(str, s.str);

} else if (!str && !s.str) {

return true;

} else {

return false;

}

}

operator char *() {

return str;

}

operator const char *() const {

return str;

}

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: