string类编程实例
2023-12-26 23:54:05
2.9 string类编程实例
实现一个字符串类String,为其提供可接受C风格字符串的析构函数、构造函数、拷贝构造函数和拷贝赋值函数
#include <iostream>
#include <cstring>
using namespace std;
class String{
public:
explicit String (const char *str){ //类型转换构造函数
cout << "String(const char *)" << endl;
this->str = new char[strlen(str)+1]; //+1 因为还要存'\0'
strcpy(this->str, str);
}
String (const String &that) { //拷贝构造函数
cout << "String(const String &)" << endl;
this->str = new char[strlen(that.str) + 1];
strcpy(this->str, that.str);
}
String &operator = (const String &that){ //拷贝赋值构造函数
cout << "String &operator(const String &)" << endl;
if(this != &that) {
delete [] str;
str = new char[strlen(that.str) + 1];
strcpy(str, that.str);
}
return *this;
}
const char *c_str(){
return str;
}
~String(void) { //析构造函数
delete str;
}
void print(void) {
cout << str << endl;
}
private:
char *str;
};
int main(void) {
String s1 = String("hello"); //类型转换构造函数
s1.print();
String s2 = s1; //拷贝构造函数
s2.print();
String s3 = String("world"); //类型转换构造函数
s2 = s3; //拷贝赋值
s2.print();
cout << s3.c_str() << endl; //string :: c_str
return 0;
}
文章来源:https://blog.csdn.net/qq_36091214/article/details/135231969
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!