#include<iostream>
#include<memory>
using namespace std;
class Base;
class Base {
public:
int i;
int j;
Base(int _i, int _j) : i(_i), j(_j) {};
};
int main(void) {
Base* q = new Base(5, 9);
cout << q->i << endl;
shared_ptr<Base> p(q);
cout << p->j << endl;
shared_ptr<Base> t(q); // mark
cout << p.use_count() << endl;
// cout << t.use_count() << endl;
return 0;
}
After I run it on visual studio 2022 with C++11, the reference count is 1 rather than two, and there's something wrong with delete that makes the programme failed.
However, when I change the code marked into "shared_ptr t(p)", everything goes well.
How?
Aucun commentaire:
Enregistrer un commentaire