c 11 移動構造 移動賦值 拷貝構造

2021-09-07 11:10:29 字數 1205 閱讀 4386

最近對準備深入學習一下c++11所有的新特性,今天研究了一下c++11的std:move和std:forward,在研究這個的時候,需要對c++0xx的拷貝構造,拷貝賦值有一些了解.這個不知道的自己去了解,這裡記錄一下c++11新加的移動版本

移動構造_移動賦值和拷貝構造_拷貝賦值的比較,文章引用

現代c++之移動構造, 移動賦值, 拷貝構造, 拷貝賦值

的這篇文章來測試.

下面**在vs2017上面可直接執行

#pragma once

#include

#include

#include

#include

class cmystring

public:

cmystring()

cmystring

(const

char

* str = nullptr)

else

}cmystring

(const cmystring& str)

cmystring

(cmystring&& str)

cmystring& operator=

(const cmystring& str)

len = str.len;

copy

(str.buf);}

return

*this;

} cmystring& operator=

(cmystring&& str)

len = str.len;

buf = str.buf;

str.len =0;

str.buf = nullptr;

}return

*this;}~

cmystring()

else

}void

print()

};void

func1

(cmystring str)

cmystring func2()

void

test0()

void

test1()

void

test2()

//測試結合容器和智慧型指標使用的情況

void

test3()

inttest_new()

C 11新特性 移動建構函式和移動賦值

移動建構函式就是從拷貝建構函式演化而來的。拷貝建構函式又分為淺拷貝和深拷貝 因此就產生了移動建構函式,將原來物件的東西移動到新的物件上 移動後當物件銷毀時不能發生錯誤 移動後原物件不再指向被移動的資源,這些資源的所有權已經歸屬新建立的物件 a a x a a x 上面兩種就是拷貝建構函式和移動建構函...

C 11 移動建構函式

移動建構函式是什麼?先舉個例子,你有一本書,你不想看,但我很想看,那麼我有哪些方法可以讓我能看這本書?有兩種做法,一種是你直接把書交給我,另一種是我去買一些稿紙來,然後照著你這本書一字一句抄到稿紙上。顯然,第二種方法很浪費時間,但這正是有些深拷貝建構函式的做法,而移動建構函式便能像第一種做法一樣省時...

移動拷貝建構函式和移動賦值

my string const char str my string my string 預設的建構函式淺拷貝 不用delete的原因是object ob ob1 一定分配好 my string const my string str 語法沒錯,可能編譯會拋 buffer new char len ...