#include <iostream>
#include <memory>
class MyClass {
public:
MyClass() {
std::cout << "MyClass constructor called" << std::endl;
}
~MyClass() {
std::cout << "MyClass destructor called" << std::endl;
}
void sayHello() {
std::cout << "Hello from MyClass!" << std::endl;
}
};
int main() {
// 使用 make_shared 创建一个共享指针
std::shared_ptr<MyClass> ptr = std::make_shared<MyClass>();
// 调用类的成员函数
ptr->sayHello();
// 当作用域结束时,shared_ptr 会自动释放资源
return 0;
}
std::make_shared
是 C++11 引入的一个函数模板,用于创建 std::shared_ptr
类型的智能指针。它不仅简化了代码,还比直接使用 new
和 std::shared_ptr
的构造函数更高效。MyClass
,并在 main
函数中使用 std::make_shared
来创建一个 std::shared_ptr<MyClass>
类型的智能指针 ptr
。ptr
自动管理 MyClass
对象的生命周期,当 ptr
不再被引用时(即超出作用域或所有引用都被销毁时),MyClass
对象会被自动删除,避免内存泄漏。ptr->sayHello()
调用了 MyClass
类中的成员函数 sayHello
,输出一条消息。这样可以确保资源的安全管理和自动释放。
上一篇:c++教学
下一篇:c++sort函数头文件
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站