一个用模板实现的计数基类
来源:互联网 发布:淘宝有人工客服 编辑:程序博客网 时间:2024/03/28 22:31
#include <stddef.h>
#include <iostream>
template <typename CountedType>
class ObjectCounter {
private:
static size_t count; // number of existing objects
protected:
// default constructor
ObjectCounter() {
++ObjectCounter<CountedType>::count;
}
// copy constructor
ObjectCounter (ObjectCounter<CountedType> const&) {
++ObjectCounter<CountedType>::count;
}
// destructor
~ObjectCounter() {
--ObjectCounter<CountedType>::count;
}
public:
// return number of existing objects:
static size_t live() {
return ObjectCounter<CountedType>::count;
}
};
template <typename CountedType>
size_t ObjectCounter<CountedType>::count = 0;
template <typename CharT>
class MyString : public ObjectCounter<CharT> {
};
template < typename CharT>
class MyString2 : public ObjectCounter<CharT >{
};
void main()
{
MyString<char> s1, s2;
MyString2<char> s3;
MyString<wchar_t> ws;
std::cout << "number of MyString<char>: "
<< MyString<char>::live() << std::endl;
std::cout << "number of MyString2<char>: "
<< MyString2<char>::live() << std::endl;
std::cout << "number of MyString<wchar_t>: "
<< ws.live() << std::endl;
}
Output: 3 3 1
==========
template <typename CharT>
class MyString : public ObjectCounter<MyString<CharT> > {
};
template < typename CharT>
class MyString2 : public ObjectCounter<MyString2<CharT> >{
};
void main()
{
MyString<char> s1, s2;
MyString2<char> s3;
MyString<wchar_t> ws;
std::cout << "number of MyString<char>: "
<< MyString<char>::live() << std::endl;
std::cout << "number of MyString2<char>: "
<< MyString2<char>::live() << std::endl;
std::cout << "number of MyString<wchar_t>: "
<< ws.live() << std::endl;
}
Output : 2 1 1
- 一个用模板实现的计数基类
- 类对象引用计数使用模板实现(奇特的递归模板模式)
- 引用计数型指针类的一个实现
- 一个简单的引用计数实现体类
- 带引用计数的智能指针(模板类)实现的3种方法
- 一个具有对象计数功能的基类
- 一个简单的计数
- 如何实现一个引用计数?
- C++ 引用计数类模板
- 计数排序算法实现(函数模板)
- c++引用计数外置方式模板实现
- 支持引用计数的智能指针类模板
- 一个自己实现的简单的智能指针模板类
- 一个实现了iterator模式的简单模板类
- 计数排序的实现
- EditText计数的实现
- 计数排序的实现
- 一个简单的seqlist的模板实现
- .NET中获取电脑名、IP地址及用户名方法
- 关于XMLHTTP无刷新数据获取和发送
- Shell 13问
- linux下多進程服務框架
- 股市啊股市!谁能读懂你的心
- 一个用模板实现的计数基类
- 如何删除使用export定义过的变量?
- 我的“亚信杯”回顾
- 一个非常好用的代理服务器软件AllegroSurf
- thumb指令的优点
- 我感觉心在流泪
- 驱动程序开发(一)-概述
- printf是在libc库中么?
- udp Nat穿透防火墙