日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++学习——拷贝构造函数和移动构造函数

發布時間:2024/7/19 c/c++ 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++学习——拷贝构造函数和移动构造函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1.拷貝構造函數
    • 2.移動構造函數

1.拷貝構造函數

拷貝構造函數,它是一種特殊的構造函數。它的作用就是用一個已經生成的對象來初始化另一個同類的對象。
當類中擁有指針類型的成員變量時,拷貝構造函數中需要以深拷貝(而非淺拷貝)的方式復制該指針成員。

淺復制僅僅是指向被復制的內存地址,如果原地址中對象被改變了,那么淺復制出來的對象也會相應改變。深復制在計算機中開辟了一塊新的內存地址用于存放復制的對象。

淺層復制之所以危險,是因為兩個指針共同指向一片內存空間,若第一個指針將其釋放,另一個指針的指向就不合法了。

深拷貝:

#include<iostream> using namespace std;class base { public:base(int value1,int value2) :p(new int),num(value2) {*p = value1;}base(const base& b) :p(new int), num(b.num) {*p = *(b.p);}//深拷貝/*base(const base& b) :p(b.p), num(b.num) {}//淺拷貝*/void print() {cout << "*p=" << *p << " num=" << num << endl;}~base() {delete p;} private:int* p;int num; };int main() {base b1(10, 20);b1.print();base b2(b1);b2.print();return 0; } *p=10 num=20 *p=10 num=20

淺拷貝:

#include<iostream> using namespace std;class base { public:base(int value1,int value2) :p(new int),num(value2) {*p = value1;}/*base(const base& b) :p(new int), num(b.num) {*p = *(b.p);}//深拷貝*/base(const base& b) :p(b.p), num(b.num) {}//淺拷貝void print() {cout << "*p=" << *p << " num=" << num << endl;}~base() {delete p;} private:int* p;int num; };int main() {base b1(10, 20);b1.print();base b2(b1);b2.print();return 0; }

2.移動構造函數

所謂移動語義,指的就是以移動而非深拷貝的方式初始化含有指針成員的類對象。簡單的理解,移動語義指的就是將其他對象(通常是臨時對象)擁有的內存資源“移為已用”。

拷貝構造函數中,對于指針,我們一定要采用深層復制,而移動構造函數中,對于指針,我們采用淺層復制。

移動構造函數的參數和拷貝構造函數不同,拷貝構造函數的參數是一個左值引用,但是移動構造函數的初值是一個右值引用。意味著,移動構造函數的參數是一個右值或者將亡值的引用。也就是說,只用用一個右值,或者將亡值初始化另一個對象的時候,才會調用移動構造函數。而那個move語句,就是將一個左值變成一個將亡值。

#include<iostream> using namespace std;class base { public:base(int value1,int value2) :p(new int),num(value2) {*p = value1;}/*base(const base& b) :p(new int), num(b.num) {*p = *(b.p);}//深拷貝,拷貝構造函數*/base(base& b) :p(b.p), num(b.num) {b.p = NULL;}//移動構造函數void print() {cout << "*p=" << *p << " num=" << num << endl;}~base() {delete p;} private:int* p;int num; };int main() {base b1(10, 20);b1.print();base b2(b1);b2.print();return 0; } *p=10 num=20 *p=10 num=20

總結

以上是生活随笔為你收集整理的C++学习——拷贝构造函数和移动构造函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美精品偷拍 | 蜜臀免费av | 91一区二区在线 | 老师用丝袜脚帮我脚交 | 国产精品一区二区三区四区在线观看 | 在线播放小视频 | 欧美日韩精品一二三区 | 日本一区二区高清视频 | 激情av在线播放 | 青青草原影视 | 人与动物2免费观看完整版电影高清 | 大尺度做爰无遮挡露器官 | 免费看黄禁片 | 91麻豆产精品久久久久久夏晴子 | 国产又粗又大又黄 | 久热精品在线视频 | 99精品久久99久久久久 | 国内精品久久久久久久久久 | 精品一区二区在线观看视频 | 欧美一级二级视频 | 五月涩 | 成年人免费视频观看 | 狠狠插影院 | 国产寡妇亲子伦一区二区三区四区 | 欧美人与性囗牲恔配 | 天堂中文8 | 麻豆一区二区在线 | 亚洲伦理在线视频 | 欧美日韩国产一区二区三区 | 四虎影院在线看 | 亚洲乱人伦| 国产一区二区免费 | 边吃奶边添下面好爽 | 一区二区三区 日韩 | 制服丝袜av在线播放 | 激情黄色小说视频 | 一区二区三区精 | 波多野一区二区三区 | youjizz少妇| 久久久久成人精品无码中文字幕 | 美女在线网站 | 日本三级少妇 | xxxwww黄色| 欧美一区二区在线播放 | 国产美女菊爆在线播放APP | 动漫涩涩免费网站在线看 | 小蝌蚪视频色 | 在线观看xxxx | 国产原创在线观看 | 国产精品一区二 | 午夜一区二区三区在线观看 | 国产一区二区三区精品视频 | 青草青草久热 | 探花国产精品一区二区 | 一级黄视频 | 午夜剧场免费在线观看 | 久久福利片 | 欧美夜夜夜 | 色久综合网 | 秋霞99| 漂亮人妻洗澡被公强 日日躁 | 91丨国产丨捆绑调教 | 亚洲精品一区二区三区蜜桃 | 爱爱视频网址 | 久久精品超碰 | 日韩三级一区二区三区 | 手机亚洲第一页 | 欧美做爰全过程免费观看 | 911久久| 99久久精品一区二区 | 日本大片黄 | 日日夜夜天天干 | 九色影院| 性欧美在线视频观看 | 伊人影音 | av先锋资源网| 欧美激情第五页 | 欧美一级免费在线 | 夜夜嗨视频 | 欧美亚洲久久 | 91中文国产 | 色婷婷婷婷 | 麻豆精品视频在线 | 特级西西www444人体聚色 | 123超碰| 强辱丰满人妻hd中文字幕 | 亚洲系列在线 | 激情男女视频 | jizz欧美| 国产精品一级黄色片 | 日韩成人无码影院 | 欧美日韩在线直播 | 亚洲精品日韩精品 | 狠狠操一区二区 | www.黄色在线 | 色猫咪av| 色婷婷www| 国产美女被遭强高潮免费网站 | 国产美女视频免费观看下载软件 |