容器的值拷貝語意

2021-07-26 05:31:02 字數 922 閱讀 3498

傳智掃地僧課程學習筆記。

理論提高:所有容器提供的都是值(value)語意,而非引用(reference)語意。容器執行插入元素的操作時,內部實施拷貝動作。所以stl容器內儲存的元素必須能夠被拷貝(必須提供拷貝建構函式)。

除了queue與stack外,每個容器都提供可返回迭代器的函式,運用返回的迭代器就可以訪問元素。

看老師課上示例**就行,

#define _crt_secure_no_warnings

#include using namespace std;

#include "vector"

class teacher

~teacher() }

//teacher t2 = t1;

teacher(const teacher &obj)

//過載 =號操作符

//t3 = t2 = t1

teacher& operator=(const teacher &obj)

//根據t1的大小分配記憶體

m_pname = new char[strlen(obj.m_pname) +1 ];

//copy t1的資料

strcpy(m_pname, obj.m_pname);

m_age = obj.m_age;

return *this;

}public:

void printt()

protected:

private:

char *m_pname;

int m_age;

};void main1301()

void main()

{ main1301();

cout<<"hello..."<

位拷貝 淺拷貝 值拷貝 深拷貝

首先定義string類,而並不實現其成員函式。class string 位拷貝拷貝的是位址,而值拷貝則拷貝的是內容。如果定義兩個string物件a和b。a.m data和b.m data分別指向一段區域,a.m data windows b.m data linux 如果未重寫賦值函式,將b賦給a ...

位拷貝 值拷貝 淺拷貝 深拷貝

位拷貝拷貝 的是位址 也叫淺拷貝 而 值拷貝則拷貝的是內容 也叫深拷貝 如果不主動編寫拷貝建構函式和賦值函式,編譯器將以 位拷貝 的方式自動生成預設的函式 現將 a賦給 b,預設賦值函式的 位拷貝 意味著執行 b.m data a.m data。這將造成三個錯誤 一是 b.m data 原有的記憶體...

位拷貝與值拷貝

位拷貝與值拷貝,也稱淺拷貝與深拷貝。什麼是淺拷貝與深拷貝?舉個例子來說吧。淺拷貝char pstr abcdefg char pstrcpy pstr 深拷貝 char pstr abcdefg char pstrcpy new char 10 memset pstrcpy,0,10 memcpy ...