【C/C++】為什麼需要複製建構函式的同時通常也需要過載複製運算子
假設有一個類,需要例項中的c屬性保持唯一
那麼:就需要建構函式生成唯一的c值;同時用另外一個例項新建一個例項,也就要保持唯一,那麼就需要複製函式分配唯一值;同時我們也可能將一個類的例項賦值給另外一個例項,但是預設複製運算建構函式不能保證唯一
#include <iostream>
#include <thread>
#include <map>
using namespace std;
class CopyStruct {
public:
CopyStruct();
CopyStruct(const CopyStruct &);
CopyStruct& operator=(const CopyStruct &c);
static int b;
int c=0;
};
CopyStruct::CopyStruct(){
this->b=this->b+1;
c=this->b;
}
CopyStruct::CopyStruct(const CopyStruct &c){
b=b+1;
this->c=b;
}
//如果這裡註釋掉,就會出現c,b例項的c值是同樣的
CopyStruct& CopyStruct::operator=(const CopyStruct &c){
return *this;
}
int CopyStruct::b =10;
int main()
{
CopyStruct a;
CopyStruct b;
CopyStruct c=b;
std::cout<<a.c<<b.c<<c.c<<std::endl;
c=b;
std::cout<<"預設複製建構函式之後:"<<c.c<<std::endl;
/*
map<string,string> arrays;
arrays["name"]="cccc";
std::cout<<arrays["name"]<<std::endl;
using name=const char *;
name a="this is a aliaes";
std::cout<<a<<std::endl;
*/
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30221425/viewspace-2666310/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C++複製建構函式C++函式
- C++ 禁用類的複製建構函式和賦值運算子C++函式賦值
- C++ 移動構造和複製建構函式匹配C++函式
- C++ 過載運算子和過載函式C++函式
- 深度解讀《深度探索C++物件模型》之複製建構函式C++物件模型函式
- 預設建構函式、引數化建構函式、複製建構函式、解構函式函式
- 物件的生存期 記憶體 深度複製 複製建構函式 筆記物件記憶體函式筆記
- 開心檔之C++ 過載運算子和過載函式C++函式
- 過載運算子、解構函式函式
- C++ 運算子過載C++
- C++——運算子過載C++
- C++運算子過載C++
- C++中運算子的過載C++
- 結構體中的指標&&複製賦值建構函式改造結構體指標賦值函式
- 關於C++複製控制C++
- C++ 建構函式實戰指南:預設構造、帶引數構造、複製構造與移動構造C++函式
- C++運算子過載詳解C++
- C++過載的奧義之運算子過載C++
- 你需要ERP同時也需要MES
- C++ 建構函式和解構函式C++函式
- 淺複製和深複製的概念與值複製和指標複製(引用複製)有關 淺複製 “指標複製 深複製 值複製指標
- 如何同時複製、分類檔案
- C++函式過載C++函式
- 禁止複製的網頁怎麼複製網頁
- C#中的物件深複製和淺複製C#物件
- C++運算子過載的一些困惑C++
- 教你快速理解C++中的運算子過載C++
- 為什麼MCU也需要AI?AI
- C++之類解構函式為什麼是虛擬函式C++函式
- 主從複製是啥或者主從複製的原理是什麼?
- 為什麼Redux 需要 reducers是純函式?Redux函式
- Java引用複製、淺複製、深複製Java
- C++之函式過載C++函式
- JS物件複製:深複製和淺複製JS物件
- 複製和引用複製
- 118 C++中函式的過載C++函式
- C++學習筆記(二) 運算子過載C++筆記
- poi操作excel,複製sheet,複製行,複製單元格,複製styleExcel