#include "stdafx.h"
#include<iostream>
#include<vector>
#include<bitset>
#include<algorithm>
#include<queue>
#include<memory>
using namespace std;
class A {
public:
int a = 10;
A() {
cout << "1111" << endl;
}
~A() {
cout << "2222" << endl;
}
};
class B {
public:
int a = 20;
B() {
cout << "B11" << endl;
}
~B() {
cout << "B222" << endl;
}
};
using DataPtr = std::shared_ptr<void>;
using APtr = std::shared_ptr<A>;
using BPtr = std::shared_ptr<B>;
DataPtr func() {
APtr aptr = std::make_shared<A>();
printf("aptr = %p\n", aptr);
aptr->a = 1179;
printf("aptr = %p\n", aptr);
printf("aptr_usesount = %d\n", aptr.use_count());
return aptr;
}
int main() {
DataPtr dptr = func();
printf("dptr_usesount = %d\n", dptr.use_count());
printf("dptr = %p\n", dptr);
A* ap = reinterpret_cast<A*>(dptr.get());
cout << "ap.a = " << ap->a << endl;
return 0;
}
用shared_ptr<void>接管任意类型的共享指针
最新推荐文章于 2024-03-24 20:18:20 发布