作者:pyg2358_586 | 来源:互联网 | 2024-12-15 17:53
在C++中,智能指针是一种用于管理动态分配对象生命周期的技术。下面是一个基本的智能指针类实现示例:
#ifndef SMARTPOINTER_H_
#define SMARTPOINTER_H_
template
class SmartPointer
{
public:
explicit SmartPointer(T* ptr = nullptr) : m_ptr(ptr) {}
~SmartPointer()
{
if (m_ptr)
{
delete m_ptr;
}
}
T* operator->() const
{
return m_ptr;
}
T& operator*() const
{
return *m_ptr;
}
SmartPointer(const SmartPointer& other)
{
m_ptr = other.m_ptr;
}
SmartPointer& operator=(const SmartPointer& other)
{
if (this != &other)
{
if (m_ptr)
{
delete m_ptr;
}
m_ptr = other.m_ptr;
}
return *this;
}
private:
T* m_ptr;
};
#endif
此代码定义了一个名为SmartPointer
的模板类,它能够自动管理指向类型T的对象的指针。当对象被销毁或指针被重新赋值时,原始指针所指向的对象将被正确删除。
#include
#include "SmartPointer.h"
using namespace std;
struct Animal
{
void speak() const
{
cout <<"This is an animal" < }
~Animal()
{
cout <<"Animal is being destroyed" < }
};
int main()
{
SmartPointer pet(new Animal());
pet->speak();
(*pet).speak();
return 0;
}
在这个例子中,我们创建了一个Animal
结构体,并使用SmartPointer
来管理它的生命周期。通过pet->speak()
和(*pet).speak()
调用成员函数,展示了如何通过智能指针访问对象的方法。