C++笔记之使用普通指针和shared_ptr在堆上申请类对象的各种写法
code review!
文章目录
- C++笔记之使用普通指针和shared_ptr在堆上申请类对象的各种写法
- 1.几种不同的写法
- 2.ChatGpt回答
1.几种不同的写法
注:使用普通指针申请堆内存,其实是应该有delete的,这里没有写
运行
代码
#include <iostream>
#include <memory>
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<MyClassA> A1_ptr = new MyClassA;
// A1_ptr->print();
// // std::shared_ptr<MyClassA> 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;
}