栈堆分配2智能指针

wangkaixin-yy / 2023-08-25 / 原文

使用智能指针释放在堆上分配的内存(超出作用域就释放)

class Entity {
private:
	float x, y;
public:
	Entity(float x,float y):x(x),y(y) {
		std::cout<<"Created Entity!"<<std::endl;
	}
	~Entity() {
		std::cout << "Destroyed Entity!" << std::endl;
	}
};
//智能指针,可以将堆上分配的指针内存释放掉
//以下类是在栈上分配内存
class ScopedPtr {
private:
	Entity* ptr;
public:
	ScopedPtr(Entity* e):ptr(e){
	}
	~ScopedPtr() {
		delete ptr;
	}
};
int main() {
	{
		ScopedPtr s = new Entity(1, 2);
	}
}