Android Ndk 学习笔记(目录)
#include <iostream>
#include <memory>
using namespace std;
class Person{
public:
~Person(){
cout << "Person 析构函数" <<endl ;
}
};
void usePerson(){
Person * person1 = new Person();
Person * person2 = new Person();
shared_ptr<Person> sharedPtr1(person1);
shared_ptr<Person> sharedPtr2(person2);
};
class Person2;
class Person1 {
public:
shared_ptr<Person2> person2;
~Person1() {
cout << "Person1 析构函数" << endl;
}
};
class Person2 {
public:
shared_ptr<Person1> person1;
~Person2() {
cout << "Person2 析构函数" << endl;
}
};
void usePerson12(){
Person1 * person1 = new Person1();
Person2 * person2 = new Person2();
shared_ptr<Person1> sharedPtr1(person1);
shared_ptr<Person2> sharedPtr2(person2);
cout << "前 sharedPtr1的引用计数是:" << sharedPtr1.use_count() << endl;
cout << "前 sharedPtr2的引用计数是:" << sharedPtr2.use_count() << endl;
person1->person2 = sharedPtr2;
person2->person1 = sharedPtr1;
cout << "后 sharedPtr1的引用计数是:" << sharedPtr1.use_count() << endl;
cout << "后 sharedPtr2的引用计数是:" << sharedPtr2.use_count() << endl;
}
class Person4;
class Person3 {
public:
weak_ptr<Person4> person4;
~Person3() {
cout << "Person1 析构函数" << endl;
}
};
class Person4 {
public:
weak_ptr<Person3> person3;
~Person4() {
cout << "Person2 析构函数" << endl;
}
};
void usePerson34(){
Person3 * person3 = new Person3();
Person4 * person4 = new Person4();
shared_ptr<Person3> sharedPtr3(person3);
shared_ptr<Person4> sharedPtr4(person4);
cout << "前 sharedPtr3的引用计数是:" << sharedPtr3.use_count() << endl;
cout << "前 sharedPtr4的引用计数是:" << sharedPtr4.use_count() << endl;
person3->person4 = sharedPtr4;
person4->person3 = sharedPtr3;
cout << "后 sharedPtr1的引用计数是:" << sharedPtr3.use_count() << endl;
cout << "后 sharedPtr2的引用计数是:" << sharedPtr4.use_count() << endl;
}
class Person5 {};
void usePerson5(){
Person5 * person51 = new Person5();
Person5 * person52 = new Person5();
std::unique_ptr<Person5> uniquePtr5(person51);
}
|