在C++中,"this"指针是一个指向当前对象的指针,它可以用于访问当前对象的成员变量和成员函数。在C++11中,智能指针被引入,其中一种是std::shared_ptr
,它是一种可以管理对象生命周期的智能指针,它可以在多个线程之间共享对象,并且在最后一个std::shared_ptr
被销毁时自动释放对象。
在C++中使用智能指针的示例代码如下:
#include<iostream>
#include<memory>
class MyClass {
public:
MyClass() {
std::cout << "MyClass constructor called"<< std::endl;
}
~MyClass() {
std::cout << "MyClass destructor called"<< std::endl;
}
};
int main() {
std::shared_ptr<MyClass> ptr1(new MyClass());
std::shared_ptr<MyClass> ptr2(new MyClass());
ptr1 = ptr2;
return 0;
}
在上面的代码中,我们创建了两个std::shared_ptr
对象,它们都指向一个MyClass
对象。当ptr1
被赋值为ptr2
时,ptr1
指向的MyClass
对象的引用计数增加了1,并且ptr2
指向的MyClass
对象的引用计数也增加了1。当ptr1
和ptr2
被销毁时,它们指向的MyClass
对象的引用计数都减少了1,因此在最后一个std::shared_ptr
被销毁时,MyClass
对象会被自动释放。
智能指针的优点是它可以自动管理对象的生命周期,避免了内存泄漏和悬挂指针的问题。但是它也有一些缺点,比如它可能会导致循环引用的问题,因为两个对象之间的引用计数都不会减少到0,导致它们都不会被释放。因此,在使用智能指针时,需要注意避免循环引用的问题。
领取专属 10元无门槛券
手把手带您无忧上云