1. 测试代码

     string temp[] = { "one", "two", "three" };StrVec sv(begin(temp), end(temp));// run the string empty funciton on the first element in svif (!sv[0].empty())sv[0] = "None"; // assign a new value to the first string // we'll call getVec a couple of times// and will read the same file each timeifstream in("D:/code/cprimerGit/cplusprimer/cprimer/data/strvec-storyDataFile");//ifstream in("../data/strvec-storyDataFile");StrVec svec = getVec(in);print(svec);in.close();cout << "copy " << svec.size() << endl;auto svec2 = svec;print(svec2);cout << "assign" << endl;StrVec svec3;svec3 = svec2;print(svec3);StrVec v1, v2;v1 = v2;                   // v2 is an lvalue; copy assignmentin.open("D:/code/cprimerGit/cplusprimer/cprimer/data/strvec-storyDataFile");v2 = getVec(in);          // getVec(in) is an rvalue; move assignmentin.close();StrVec vec;  // empty StrVecstring s = "some string or another";vec.push_back(s);      // calls push_back(const string&)vec.push_back("done"); // calls push_back(string&&)// emplace member covered in chpater 16s = "the end";
#ifdef VARIADICSvec.emplace_back(10, 'c'); // adds cccccccccc as a new last elementvec.emplace_back(s);  // uses the string copy constructor
#elsevec.push_back(string(10, 'c')); // calls push_back(string&&)vec.push_back(s);               // calls push_back(const string&)
#endifstring s1 = "the beginning", s2 = s;
#ifdef VARIADICSvec.emplace_back(s1 + s2); // uses the move constructor
#elsevec.push_back(string(s1 + s2)); // calls push_back(string&&)
#endif

2. strvec-storyDataFile文件内容:

Alice Emma has long flowing red hair.
Her Daddy says when the wind blows
through her hair, it looks almost alive,
like a fiery bird in flight.
A beautiful fiery bird, he tells her,
magical but untamed.
"Daddy, shush, there is no such thing,"
she tells him, at the same time wanting
him to tell her more.
Shyly, she asks, "I mean, Daddy, is there?"

3. 输出结果:

【参考】

[1] 代码copyControl.h

C++ Primer 5th笔记(chap 13 拷贝控制) 实例2内存管理测试结果相关推荐

  1. C++ Primer 5th笔记(chap 13 拷贝控制)合成的移动操作

    1. 出现条件 只有当一个类没有定义任何自己版本的拷贝控制成员,且类的每个非 static 数据成员都可以移动,编译器才会为它合成构造函数或移动赋值运算符. struc X{int i;std::st ...

  2. C++ Primer 5th笔记(chap 13 拷贝控制)三五法则

    1. 三个基本操作可以控制类的拷贝操作 • 拷贝构造函数 • 拷贝赋值运算符 • 析构函数. 新标准还有2个函数: • 移动构造函数(move constructor) • 移动赋值运算符(move- ...

  3. C++ Primer 5th笔记(chap 13 拷贝控制)阻止拷贝

    对于一些类来说,拷贝操作是没有意义的,例如 iostream 类阻止了拷贝,以避免多个对象写入或读取相同的 IO 缓冲. 1. 删除函数deleted function 1.1 定义 通过在函数的参数 ...

  4. C++ Primer 5th笔记(chap 13 拷贝控制)=default

    可以将拷贝控制成员函数定义为 =default 来显示地要求编译器生成合成版本. class Sales_data{public:Sales_data() = default;Sales_data(c ...

  5. C++ Primer 5th笔记(chap 13 拷贝控制) 实例2内存管理

    1. 目标 实现标准库vector类的一个简化版本,只支持string,我们命名为StrVec. 2. 设计思想 2.1 allocator管理每个StrVec对象的内存池, 是一块连续的内存(类型为 ...

  6. C++ Primer 5th笔记(chap 13 拷贝控制)引用限定符

    1. 问题 关于右值和左值引用成员函数,通常在一个对象上调用成员函数,而不管对象是一个左值还是一个右值: string s1 = "a value",s2 = "anot ...

  7. C++ Primer 5th笔记(chap 13 拷贝控制)实例1

    1. Folder和Message的类设计 2. Messager.h class Message {friend void swap(Message&, Message&);frie ...

  8. C++ Primer 5th笔记(chap 13 拷贝控制) 对象移动

    1. 为什么要有对象移动 使用移动而非拷贝对象能够大大提升性能. 一些不能被共享的资源类的对象不能拷贝但是可以移动.eg. IO 类 unique_ptr 类 2. 如何做到对象移动 2.1 什么是右 ...

  9. C++ Primer 5th笔记(chap 13 拷贝控制)移动构造和移动赋值

    1. 移动构造函数和移动赋值运算符 一般来说,拷贝一个资源会导致一些额外的开销.在这种拷贝并非必要的情况下,定义了移动构造函数和移动赋值运算符的类就可以避免此问题. eg. StrVec::StrVe ...

  10. C++ Primer 5th笔记(chap 13 拷贝控制)交换操作

    1. 类对象的交换赋值 Hasptr.h class Hasptr {public: Hasptr(const std::string &s = std::string()):ps(new s ...

最新文章

  1. python自然语言处理一作者书
  2. 微信用户全局唯一标识_分布式系统的唯一ID生成算法对比
  3. 你需要掌握的三种编程语言
  4. python物性库能调用哪些物质_Python获取热物性(2)使用ctREFPROP调用refprop
  5. JavaScript | 数组的常用属性和方法
  6. 对ExtendedWebBrowser的再扩展
  7. Tree树结构java实现
  8. sql 只要一个字段相同则只显示一条数据_数据库
  9. 网络基石 —— ADSL
  10. 3 矩阵运算_FlyAI小课堂:小白学PyTorch(11) 常见运算详解
  11. 安装和客户端证书颁发---puppet系列
  12. ubuntu16.04下Qt无法输入中文注释
  13. 解读Depth Map Prediction from a Single Image using a Multi-Scale Deep Network (2)
  14. 基于Python+Opencv的银行卡号识别系统(附完整代码)
  15. 时代变了,互联网与房产开发商能否找到真爱
  16. PaMIR: Parametric Model-Conditioned Implicit Representation for Image-based Human Reconstruction
  17. 中国不锈钢行业需求态势及发展形势展望报告(新版)2022-2027年
  18. 兰州大学计算机技术专业学位,兰州大学信息科学与工程学院(专业学位)计算机技术保研条件...
  19. openlayers 图层刷新问题
  20. 【热门】新生儿起名测名:女孩带墨字的名字有哪些

热门文章

  1. 语法手册_是真的猛!SQL 语法速成手册
  2. 数据中心机房冷热通道优化设计经验谈
  3. 凝心聚力,共赢绿色计算新时代 ——2020绿色计算产业峰会在京召开
  4. linux i2c子系统入口,I2C子系统1 - ARM_Linuxx的个人空间 - OSCHINA - 中文开源技术交流社区...
  5. echarts仪表盘option_echarts仪表盘完整代码
  6. php实现小说字典功能_PHP实现获取并生成数据库字典的方法
  7. Paper:《NÜWA: Visual Synthesis Pre-training for Neural visUal World creAtion,女娲:用于神经视觉世界创造的视觉》翻译与解读
  8. Python:非常详细的解释如何判断某个变量的类型以及代码实现
  9. Py之av:av库的简介、安装、使用方法之详细攻略
  10. ML之FE:数据处理—特征工程之数据集划分成训练集、验证集、测试集三部分简介、代码实现、案例应用之详细攻略