15.智能指针与迭代器

1.pointer-like classes,关于智能指针
image
类型名 对象名(参数列表);

int x(5); // 调用 int 的构造函数(其实就是初始化),x = 5
string s("hello"); // 调用 string 的构造函数,s 被初始化为 "hello"
complex c(3.5, 2.0); // 调用 complex 的双参数构造函数
// 我们的例子
shared_ptr sp(new Foo); // 调用 shared_ptr 的构造函数,参数是 new Foo 返回的指针,分三步执行
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,关于迭代器
迭代器 是“游标”,帮你走遍容器,像一个“可移动的指针”。
image
image

posted @ 2026-01-06 14:48  r5ett  阅读(2)  评论(0)    收藏  举报