2022-10-10 01:16:09 -05:00

41 lines
720 B
C++

#include <memory>
#include <stdio.h>
class C2{
public:
int data=4;
~C2(){
printf("C2 destroyed\n");
}
};
class C1{
public:
~C1(){
printf("C1 destroyed\n");
}
void PrintData(std::weak_ptr<C2>ptr) {
printf("Data is %d\n",ptr.lock()->data);
}
};
int main(){
std::shared_ptr<C1> ptrA{std::make_shared<C1>()};
std::weak_ptr<C1>ptrA_2=ptrA;
if (!ptrA_2.expired()) {
printf("Count:%ld",ptrA.use_count());
std::shared_ptr<C1> ptrA_3{ptrA};
printf("Inside if statement.\n");
std::shared_ptr<C2> ptrB{std::make_shared<C2>()};
ptrA_2.lock()->PrintData(ptrB);
printf("Count:%ld",ptrA.use_count());
}
printf("Count:%ld",ptrA.use_count());
printf("Outside if statement.\n");
return -1;
}