解释:
代码如下:
(运用了分文件,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;
}