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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

C++ Primer 5th笔记(chap 13 拷贝控制) 实例1测试和结果分析

發布時間:2025/3/21 c/c++ 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ Primer 5th笔记(chap 13 拷贝控制) 实例1测试和结果分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 測試代碼和結果

string s1("contents1");string s2("contents2");string s3("contents3");string s4("contents4");string s5("contents5");string s6("contents6");// all new messages, no copies yetMessage m1(s1);Message m2(s2);Message m3(s3);Message m4(s4);Message m5(s5);Message m6(s6);Folder f1;Folder f2;m1.save(f1); m3.save(f1); m5.save(f1);m1.save(f2);m2.save(f2); m4.save(f2);m6.save(f2);

/* 輸出為
Message:
contents1
Appears in 2 Folders
Folder contains 4 messages
Message 1:
contents1
Message 2:
contents2
Message 3:
contents4
Message 4:
contents6
*/

m1.debug_print();f2.debug_print();// create some copiesMessage c1(m1);Message c2(m2), c4(m4), c6(m6);

/* f2增加了c1, c2, c4, c6, 輸出為
Message:
contents1
Appears in 2 Folders
Folder contains 8 messages
Message 1:
contents1
Message 2:
contents2
Message 3:
contents4
Message 4:
contents6
Message 5:
contents1
Message 6:
contents2
Message 7:
contents4
Message 8:
contents6
*/
m1.debug_print();
f2.debug_print();

// now some assignmentsm2 = m3;m4 = m5;m6 = m3;m1 = m5;

/* m1 的內容變為了m5的,m2,m4,m6每次賦值后,f2 只剩下c1,c2,c4,c6
Message:
contents5
Appears in 1 Folders
Folder contains 4 messages
Message 1:
contents1
Message 2:
contents2
Message 3:
contents4
Message 4:
contents6
*/
m1.debug_print();
f2.debug_print();

// finally, self-assignmentm2 = m2;m1 = m1;

/* m1自身賦值,變為0了。f2不變
Message:
contents5
Appears in 0 Folders
Folder contains 4 messages
Message 1:
contents1
Message 2:
contents2
Message 3:
contents4
Message 4:
contents6
*/
m1.debug_print();
f2.debug_print();

vector<Message> vm;cout << "capacity: " << vm.capacity() << endl;vm.push_back(m1);cout << "capacity: " << vm.capacity() << endl;vm.push_back(m2);cout << "capacity: " << vm.capacity() << endl;vm.push_back(m3);cout << "capacity: " << vm.capacity() << endl;vm.push_back(m4);cout << "capacity: " << vm.capacity() << endl;vm.push_back(m5);cout << "capacity: " << vm.capacity() << endl;vm.push_back(m6);vector<Folder> vf;cout << "capacity: " << vf.capacity() << endl;vf.push_back(f1);cout << "capacity: " << vf.capacity() << endl;vf.push_back(f2);cout << "capacity: " << vf.capacity() << endl;vf.push_back(Folder(f1));cout << "capacity: " << vf.capacity() << endl;vf.push_back(Folder(f2));cout << "capacity: " << vf.capacity() << endl;vf.push_back(Folder());cout << "capacity: " << vf.capacity() << endl;Folder f3;f3.save(m6);vf.push_back(f3);cout << "capacity: " << vf.capacity() << endl;cout << endl;

其余結果如下:

capacity: 0 capacity: 1 capacity: 2 capacity: 3 capacity: 4 capacity: 6capacity: 0 capacity: 1 capacity: 2 capacity: 3 capacity: 4 capacity: 6 //這里雖然結果是6,但是size是6 capacity: 6

【參考】
[1] 代碼copyControl.h

總結

以上是生活随笔為你收集整理的C++ Primer 5th笔记(chap 13 拷贝控制) 实例1测试和结果分析的全部內容,希望文章能夠幫你解決所遇到的問題。

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