C++ Primer Chapter 12-3

来源:互联网 发布:音频发生器软件 编辑:程序博客网 时间:2024/06/05 10:40
1:我们可以向 unique_ptr  传递一个删除器,但是只能通过在实例化 unique_ptr 时,在 <> 中指出来。类似关联容器中重载比较操作一样。

2:weak_ptr 是指向一个由 shared_ptr 管理的对象,但是并不影响 shared_ptr 的引用计数。由于 weak_ptr 是弱共享,所以其不能确定其所指对象是否存在,必须先调用Lock 函数来确定之后在访问。

3 :在一个类中,const 函数不可以调用非 const 的函数。

4:new 和 allocator 都可以分配一个对象数组,allocator 还支持把分配初始化分开。使用 allocator 性能更好。

5:可以用 unique_ptr <int []> up(new int [10]) 来用一个 unique 指针来管理一个数组,用 release 来释放数组的内存。但是其不支持成员访问运算符。只支持 [ ] 运算符

6:想用 shared_ptr 去管理数组指针,就必须要自定义一个删除器。
  1. shared_ptr<int> sp(new int [10],[] (int *) {delete [] p;}
但是不能用 [ ] 去访问。

7:定义字符数组(char str [ ] = { "tao" })时,实际数组的长度是比字符的长度多 1 个的,因为需要存放一个空字符作为结尾

8:allocator 对象可以来为给定的类型来分配内存,然后构造对象,然后可以先destroy ,然后 deallocatedeallocate(p,n) 中的 n 必须要和 allocate(n) 中的 n 值一样

9:allocator 还提供未初始化的拷贝和填充算法 ,详见 page 429,它们都以uninitialized_开头,类似于copy 和 fill 算法

10:虽然 weak _ptr 是一个指针,但是需要将其转换为 shared_ptr 之后才可以做解引用操作。 可以用 lock() 函数来完成该功能,返回 weak_ptr 指向的对象的 shared_ptr, 如果为空对象,则返回空的 shared_ptr 。

11:对于类放在不同的文件中定义,可以把需要包含的头文件放在一个 stdafx.h 文件中,然后包含该文件。对于类的定义全部放在 .cpp文件中,不要在 .h 和 .cpp 出现。

12: 

0 0
原创粉丝点击