C++之Big Three:拷貝構造、拷貝賦值、解構函式探究
牽涉到本文知識點的前文:C++之操作符過載探究(五):賦值運算子過載和拷貝賦值函式(深拷貝)
Big Three:拷貝構造、拷貝賦值、解構函式。
例:
本例分析:打字手累,直接貼以前啥也不懂時研究本例知識點的筆記,有點囉嗦,自己看吧:
筆記第一頁:
筆記第二頁:
筆記第三頁:
筆記第四頁:
筆記第五頁:
筆記第六頁:
筆記第七頁:(啥也沒記)
筆記第八頁:(啥也沒記)
筆記第九頁:
筆記第十頁:(啥也沒記)
附本例程式碼:
//小問學程式設計
#include <cstring>
#include <iostream>
using namespace std;
class String
{
public:
String(const char* cstr=0);
String(const String& str);
String& operator=(const String& str);
~String();
char* get_c_str() const { return m_data; }
private:
char* m_data;
};
#include <cstring>
inline
String::String(const char* cstr)
{
if (cstr) {
m_data = new char[strlen(cstr)+1];
strcpy(m_data, cstr);
}
else {
m_data = new char[1];
*m_data = '\0';
}
}
inline
String::~String()
{
delete[] m_data;
}
inline
String& String::operator=(const String& str)
{
if (this == &str)
return *this;
delete[] m_data;
m_data = new char[ strlen(str.m_data) + 1 ];
strcpy(m_data, str.m_data);
return *this;
}
inline
String::String(const String& str)
{
m_data = new char[ strlen(str.m_data) + 1 ];
strcpy(m_data, str.m_data);
}
ostream& operator<<(ostream& os, const String& str)
{
os << str.get_c_str();
return os;
}
int main()
{
String s1("hello");
String s2("world");
String s3(s2);
cout << s3 << endl;
s3 = s1;
cout << s3 << endl;
cout << s2 << endl;
cout << s1 << endl;
}
執行結果:
相關文章
- C++拷貝建構函式(深拷貝,淺拷貝)C++函式
- C++中建構函式,拷貝建構函式和賦值函式的詳解C++函式賦值
- C++拷貝建構函式詳解C++函式
- C++ 拷貝建構函式詳解C++函式
- 拷貝建構函式函式
- 賦值、淺拷貝與深拷貝賦值
- C++/CLI思辨錄之拷貝建構函式C++函式
- 建構函式,拷貝賦值函式的N種呼叫情況函式賦值
- C++派生類的拷貝構造C++
- C++之this指標、拷貝構造、賦值構造、單列模式(餓漢模式、懶漢模式)C++指標賦值模式
- C++複製控制:拷貝建構函式C++函式
- 拷貝建構函式的作用函式
- 【Python】直接賦值,深拷貝和淺拷貝Python賦值
- JavaScript 之物件拷貝與賦值JavaScript物件賦值
- js資料型別賦值,淺拷貝,深拷貝JS資料型別賦值
- 淺析賦值、淺拷貝、深拷貝的區別賦值
- 拷貝建構函式中的陷阱函式
- jquery之物件拷貝深拷貝淺拷貝案例講解jQuery物件
- C++語言之結構體、類、建構函式、拷貝建構函式C++結構體函式
- Python - 物件賦值、淺拷貝、深拷貝的區別Python物件賦值
- c/c++ 拷貝控制 建構函式的問題C++函式
- C++淺拷貝和深拷貝C++
- 【c++】淺拷貝與深拷貝C++
- 拷貝建構函式(比較全的)函式
- C++:String物件的構造及深拷貝C++物件
- 批註:C++中複製建構函式與過載賦值操作符總結:預設淺拷貝,帶指標的需要深拷貝C++函式賦值指標
- C++知識點49——類繼承與類的構造、拷貝、operator=和解構函式C++繼承函式
- ES6 變數宣告與賦值:值傳遞、淺拷貝與深拷貝詳解變數賦值
- JavaScript之深拷貝和淺拷貝JavaScript
- js之淺拷貝和深拷貝JS
- React之淺拷貝與深拷貝React
- 龍叔python-直接賦值,深拷貝,淺拷貝的簡單解析Python賦值
- C++的一點基本自我修養(二)--拷貝建構函式C++函式
- vue深拷貝淺拷貝Vue
- python 指標拷貝,淺拷貝和深拷貝Python指標
- Python 擴充之詳解深拷貝和淺拷貝Python
- 圖解 Python 淺拷貝與深拷貝圖解Python
- 一文搞懂Java引用拷貝、淺拷貝、深拷貝Java