0
点赞
收藏
分享

微信扫一扫

实现string类拷贝构造函数和赋值构造函数#C++

舟海君 2022-04-18 阅读 204
c++

解释:

代码如下:

(运用了分文件,new开辟char字符空间)

string.cpp中的代码:

代码目的:

<1>将字符串"hello"赋值到a中char类型指针m_string开辟的空间中

<2>将字符串"world"赋值到b中char类型指针m_string开辟的空间中

<3>将a中char类型指针m_string开辟的空间中的字符拷贝给c中char类型指针m_string开辟的空间

#include<iostream>
#include<cstring>
#include"Mystring.h"
using namespace std;
void main()
{
	Mystring a("hello");
	Mystring b("world");
	Mystring c(a);
	a.display();
	b.display();
	c.display();
}

Mystring.h(声明)

#pragma once
#include<iostream>
using namespace std;
class Mystring
{
	char* m_string;
public:
	Mystring(const char* mstring);
	void display();
	Mystring(const Mystring& a);
    ~Mystring();
};

Mystring.cpp(赋值拷贝的两个Mystring类的内置函数如下)

void Mystring::display()为对字符串进行输出的可调用内置函数

#define _CRT_SECURE_NO_WARNINGS 是防止strcpy的运用出错

#define _CRT_SECURE_NO_WARNINGS
#include"Mystring.h"
Mystring::Mystring(const char* mstring)
{
	m_string = new char[strlen(mstring) + 1];
	strcpy(m_string, mstring);
	cout << "赋值构造" << endl;
}
Mystring::Mystring(const Mystring &a)
{
	m_string = new char[strlen(a.m_string) + 1];
	strcpy(m_string,a.m_string);
	cout << "拷贝构造" << endl;
}
void Mystring::display()
{
	cout << m_string << endl;//在类的函数里可以调用私有变量,所以可以直接输出
}
Mystring::~Mystring()
{
	cout << "Destructing " << m_string << endl;
	delete[]m_string;
}

举报

相关推荐

0 条评论