Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

c++ make_shared

作者:邪天血战   发布日期:2025-03-08   浏览:259

#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 类型的智能指针。它不仅简化了代码,还比直接使用 newstd::shared_ptr 的构造函数更高效。
  • 在上面的代码中,我们定义了一个简单的类 MyClass,并在 main 函数中使用 std::make_shared 来创建一个 std::shared_ptr<MyClass> 类型的智能指针 ptr
  • ptr 自动管理 MyClass 对象的生命周期,当 ptr 不再被引用时(即超出作用域或所有引用都被销毁时),MyClass 对象会被自动删除,避免内存泄漏。
  • ptr->sayHello() 调用了 MyClass 类中的成员函数 sayHello,输出一条消息。

这样可以确保资源的安全管理和自动释放。

上一篇:c++教学

下一篇:c++sort函数头文件

大家都在看

c++闭包

c++单引号和双引号的区别

c++ 注释

c++如何判断素数

c++freopen怎么用

c++ 获取系统时间

c++进制转换函数

c++ tcp

c++ gcd函数

c++ cli

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站