C++ 对象引用的计数
我感到困惑,有没有办法计算类对象的引用C++ 对象引用的计数,c++,C++,我感到困惑,有没有办法计算类对象的引用 class A { public : A(){} } int main() { A obj; A * ptr1 = &obj; A * ptr2 = &obj; A * ptr3 = &obj; } 现在我将如何知道我的对象obj由三个指针引用。只有在您自己实现它的情况下。如果您来自C#或Java(或其他托管语言),那么这可能是一个困难的概念 最好使用或提供的标准指针类型之一 例如,将记录对对象的所
class A
{
public :
A(){}
}
int main()
{
A obj;
A * ptr1 = &obj;
A * ptr2 = &obj;
A * ptr3 = &obj;
}
现在我将如何知道我的对象obj由三个指针引用。只有在您自己实现它的情况下。如果您来自C#或Java(或其他托管语言),那么这可能是一个困难的概念 最好使用或提供的标准指针类型之一
例如,将记录对对象的所有“引用”,并管理生命周期。将只允许一个指针指向您的对象。仅当您自己实现它时。如果您来自C#或Java(或其他托管语言),那么这可能是一个困难的概念 最好使用或提供的标准指针类型之一
例如,将记录对对象的所有“引用”,并管理生命周期。将只允许一个指针指向您的对象。原始指针不进行引用计数。您需要自己实现一个引用计数智能指针类,或者使用一个已经存在的类,例如
shared_ptr
允许您使用use_count()
member函数访问其引用计数
例如:
#include <memory>
#include <iostream>
class A
{
public :
A(){}
}
int main()
{
//Dynamically allocate an A rather than stack-allocate it, as shared_ptr will
//try to delete its object when the ref count is 0.
std::shared_ptr<A> ptr1(new A());
std::shared_ptr<A> ptr2(ptr1);
std::shared_ptr<A> ptr3(ptr1);
std::cout<<"Count: "<<ptr1.use_count()<<std::endl; //Count: 3
return 0;
}
#包括
#包括
甲级
{
公众:
A(){}
}
int main()
{
//动态分配一个堆栈,而不是像shared_ptr那样分配它
//当引用计数为0时,尝试删除其对象。
std::shared_ptr ptr1(新的A());
std::共享ptr ptr2(ptr1);
std::共享ptr ptr3(ptr1);
原始指针不进行引用计数。您需要自己实现一个引用计数智能指针类,或者使用一个已经存在的类,例如
shared_ptr
允许您使用use_count()
member函数访问其引用计数
例如:
#include <memory>
#include <iostream>
class A
{
public :
A(){}
}
int main()
{
//Dynamically allocate an A rather than stack-allocate it, as shared_ptr will
//try to delete its object when the ref count is 0.
std::shared_ptr<A> ptr1(new A());
std::shared_ptr<A> ptr2(ptr1);
std::shared_ptr<A> ptr3(ptr1);
std::cout<<"Count: "<<ptr1.use_count()<<std::endl; //Count: 3
return 0;
}
#包括
#包括
甲级
{
公众:
A(){}
}
int main()
{
//动态分配一个堆栈,而不是像shared_ptr那样分配它
//当引用计数为0时,尝试删除其对象。
std::shared_ptr ptr1(新的A());
std::共享ptr ptr2(ptr1);
std::共享ptr ptr3(ptr1);
标准::cout