shared_ptr
shared_ptr
采用引用计数的方式管理所指向的对象。当有一个新的shared_ptr
指向同一个对象时(复制shared_ptr
等),引用计数加1
。当shared_ptr
离开作用域时,引用计数减1
。当引用计数为0
时,释放所管理的内存。
可以使用make_shared来获得shared_ptr
。
1 2 |
shared_ptr<string> p1 = make_shared<string>(""); auto p2 = make_shared("hello"); |
shared_ptr
可以使用一个new
表达式返回的指针进行初始化。 但是,不能将一个new
表达式返回的指针赋值给shared_ptr
。
unique_ptr
不可以对
unique_ptr
进行拷贝、赋值等操作,但是可以通过release
函数在unique_ptr
之间转移控制权。
weak_ptr
weak_ptr
一般和shared_ptr
配合使用。它可以指向shared_ptr
所指向的对象,但是却不增加对象的引用计数。这样就有可能出现weak_ptr
所指向的对象实际上已经被释放了的情况。因此,weak_ptr
有一个lock
函数,尝试取回一个指向对象的shared_ptr
。
构造函数中调虚函数
可以调用,但被调用的虚函数不会表现出多态性。
本文为原创文章,版权归Aet所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 2023_02_2703/06
- ♥ 2025_03_1103/11
- ♥ 2020_11_19_0202/17
- ♥ 2022_02_24_0103/01
- ♥ 2020_04_2804/28
- ♥ 2025_03_2503/25