前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >string函数的深拷贝

string函数的深拷贝

作者头像
用户11039545
发布2025-02-02 21:55:49
发布2025-02-02 21:55:49
3500
代码可运行
举报
文章被收录于专栏:c语言c语言
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
复制
# define _CRT_SECURE_NO_WARNINGS 
#include <iostream>
#include <string>
using namespace std;
class string {
public:
	//构造函数
	string(const char* str = " ") {
		if (str == nullptr) {
			_str = new char[1];
			_str[0] = '\0';
		}
		else
		{
			_str = new char[strlen(str)];
			strcpy(_str, str);

		}
	}
	//拷贝构造函数,使用深拷贝
	string(const string& s)
	{
		_str = new char[strlen(s._str) + 1];
		strcpy(s._str, _str);
     }
	string& operator=(const string& s) {
		if (this != &s) {
			delete _str[ ];
			_str = new char[strlen(s._str) + 1];
			strcpy(_str, s._str);

		}
		return *this;
	}
	//析构函数
	~string()
	{
		delete _str;
	}
	// 提供一个成员函数来打印字符串,方便测试
	const char* c_str() const {
		return _str;
	}
private:

	char* _str;

};

代码语言:javascript
代码运行次数:0
复制
# define _CRT_SECURE_NO_WARNINGS 
int main() {
    // 测试构造函数
    string s1("Hello");
    std::cout << "s1: " << s1.c_str() << std::endl;

    // 测试拷贝构造函数
    string s2(s1);
    std::cout << "s2: " << s2.c_str() << std::endl;

    // 测试赋值运算符重载
    string s3;
    s3 = s1;
    std::cout << "s3: " << s3.c_str() << std::endl;

    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档