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所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 2020_11_2302/17
- ♥ 2022_03_1603/17
- ♥ 2020_11_19_0102/16
- ♥ 2023_02_0502/05
- ♥ 2020_11_2002/17
- ♥ 2025_03_2503/25
热评文章
- 2022_02_16 0
- 2022_09_14 0
- 2020_11_19_02 0
- 2022_02_18 0
- 2023_02_05 0
- 2020_11_19_01 0