C++笔记之使用普通指针和shared_ptr在堆上申请类对象的各种写法

C++笔记之使用普通指针和shared_ptr在堆上申请类对象的各种写法

code review!

文章目录

  • C++笔记之使用普通指针和shared_ptr在堆上申请类对象的各种写法
    • 1.几种不同的写法
    • 2.ChatGpt回答

1.几种不同的写法

注:使用普通指针申请堆内存,其实是应该有delete的,这里没有写
C++笔记之使用普通指针和shared_ptr在堆上申请类对象的各种写法_第1张图片

运行
C++笔记之使用普通指针和shared_ptr在堆上申请类对象的各种写法_第2张图片

代码

#include 
#include 

class MyClassA {
  public:
    MyClassA() {
        // ...初始化对象...
    }
    void print() {
        std::cout << "------------1----" << std::endl;
    }
};

int main() {

    MyClassA *A1 = new MyClassA();
    A1->print();

    MyClassA *A2 = new MyClassA;
    A2->print();

    MyClassA *A3(new MyClassA());
    A3->print();

    MyClassA *A4(new MyClassA);
    A4->print();

    std::shared_ptr<MyClassA> A1_ptr = std::make_shared<MyClassA>();
    A1_ptr->print();

    // std::shared_ptr A1_ptr = new MyClassA;
    // A1_ptr->print();

    // // std::shared_ptr A1_ptr = new MyClassA();
    // // A1_ptr->print();

    std::shared_ptr<MyClassA> A2_ptr(new MyClassA);
    A2_ptr->print();

    std::shared_ptr<MyClassA> A3_ptr(new MyClassA());
    A3_ptr->print();

    auto A4_ptr = std::shared_ptr<MyClassA>(new MyClassA);
    A4_ptr->print();

    auto A5_ptr = std::shared_ptr<MyClassA>(new MyClassA());
    A5_ptr->print();

    return 0;
}

2.ChatGpt回答

C++笔记之使用普通指针和shared_ptr在堆上申请类对象的各种写法_第3张图片

你可能感兴趣的:(c++,笔记,开发语言)