#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++ resize
下一篇:c++多重继承
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站