1.pointer-like classes,关于智能指针

类型名 对象名(参数列表);
如
int x(5); // 调用 int 的构造函数(其实就是初始化),x = 5
string s("hello"); // 调用 string 的构造函数,s 被初始化为 "hello"
complex
// 我们的例子
shared_ptr
shared_ptr(T* p):px(p){}
shared_ptr(T* p)函数名 + 参数列表
: px(p)初始化列表
{ }函数体
//先执行括号里的 new Foo:在堆上动态创建一个 Foo 对象。new 表达式执行完毕后,返回一个 Foo 类型**的原生指针,指向刚刚创建好的那个 Foo 对象。这个指针是临时的,只在这一条语句中存在。
//用这个返回的原生指针去调用 shared_ptr 的构造函数。编译器看到 sp(new Foo),就会把第1步得到的临时 Foo 指针作为参数,传给这个构造函数。
//结果:sp 这个 shared_ptr 对象完成了初始化
2.pointer-like classes,关于迭代器
迭代器 是“游标”,帮你走遍容器,像一个“可移动的指针”。

