您好,登錄后才能下訂單哦!
STRING.h文件
#pragma once
#include<string.h>
class String
{
public:
String(char* str="") //深拷貝
:_str(new char[strlen(str)+1])
{
strcpy(_str, str);
cout << "構造函數 " << endl;
}
~String()
{
if (_str!=NULL)
{
delete[]_str;
}
cout << "析構函數" << endl;
}
String(const String& s) //深拷貝
:_str(new char[strlen(s._str) + 1])
{
strcpy(_str, s._str);
cout << "拷貝構造函數" << endl;
}
/*String(const String& s)
:_str(NULL)
{
String tmp(s._str);
swap(_str, tmp._str);
}*/
String &operator=(const String& s)
{
if (this != &s) //傳統寫法,有弊端
{
/*delete[]_str;
_str = new char[(strlen(s.str) + 1)];//----如果沒有空間怎么辦
strcpy(_str, s._str);*/
char *tmp = new char[strlen(s._str) + 1];//現代寫法
strcpy(tmp, s._str);
delete[] _str;
_str = tmp;
}
cout << "賦值運算符重載" << endl;
return *this;
}
private:
char* _str;
};
test.cpp文件
#include<iostream>
using namespace std;
#include"STRING.h"
int main()
{
String s1;
String s2("abcd");
s1 = s2;
String s3 = s2;
int i = 0;
system("pause");
return 0;
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。