https://github.com/jzplp/Cpp-Primer-Answer

  • 练习12.1
    代码的结尾b2已经被释放,b1中包含4个元素
  • 练习12.2
    12.2 StrBlob.h程序代码
  • 12.2 StrBlob.cpp程序代码
  • 12.2 测试程序代码
  • 练习12.3
    不需要,因为push_back和pop_back会改变对象,但是const是不允许改变的。
  • 练习12.4
    因为data.size()的返回值肯定是大于等于0的。
  • 练习12.4
    因为size_type类型是unsigned类型,如果i的值为负,那么便自动转化为大整数。 而且check是私有函数,值是我们控制的
  • 练习12.5
    可以用一个初始化列表对StrBlob进行隐式转换。缺点是在不需要转换的地方可能会造成错误。
  • 练习12.6
    12.6程序代码
  • 练习12.7
    12.7程序代码
  • 练习12.8
    首先是把p当作一个bool值返回,实际效果是如果p不是一个空指针,那么就会返回true
    其次是没有释放p所指向的动态内存空间
  • 练习12.9
    r被q中的内容覆盖,其原来的地址中的内存无法被释放。
    r2中的内存被智能指针自动释放。
  • 练习12.10
    正确
  • 练习12.11
    函数执行完毕后,p指向的内存会被释放
  • 练习12.12
    (a) 合法
    (b) 不合法
    (c) 不合法
    (d) 合法但有危险
  • 练习12.13
    sp指向的内存被释放
  • 练习12.14
    部分内容只有声明无定义,不能执行
    12.14 connection程序代码
  • 练习12.15
    部分内容只有声明无定义,不能执行
    12.15 用lambda改写connection程序代码
  • 练习12.16
    12.16 错误程序代码 错误信息:
[Error] use of deleted function 'std::unique_ptr<_Tp, _Dp>& std::unique_ptr<_Tp, _Dp>::operator=(const std::unique_ptr<_Tp, _Dp>&) [with _Tp = int; _Dp = std::default_delete<int>]'
delete [] pa;