假设我们有一个模板类ptr。 ptr 类的构造函数可以采用 int、double、另一种手工结构等值,因为它是一个模板类。
我想确切地查看这些构造函数和析构函数被调用了多少次,以及还有被调用的数据类型。这个可以看吗?
现在我在模板类中有一个 static int 值和 2 个构造函数(1 个默认构造函数)和 1 个析构函数,我在其中增加/减少 static int 值的值。
template<class T>
class ptr
{
private:
T* data;
public:
ptr();
ptr(T* data);
~ptr();
static int number;
};
template<class T>
int ptr<T>::number = 0;
我如何才能看到调用这些构造函数和析构函数的类型?我现在看到的只是静态 int 的值,而不是调用它的类型。
最佳答案
如果您确实希望计算所有实例(独立于类型),您可以尝试为它们提供一个通用的非模板化父类(super class):
class uniptr {
protected:
static int number;
}
template<class T>
class ptr: public uniptr
{
private:
T* data;
public:
ptr();
ptr(T* data);
~ptr();
};
这似乎通过一些合理的封装来做你想做的事。如果不是很清楚这是有效的,因为只有一个类 uniptr 声明(因此只有一个静态 int),即使可能使用了多个版本的 ptr(如 ptr<int>
和 ptr<String>
)。
关于c++ - 如何在构造函数和析构函数中增加模板类中的静态 int 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33171070/