模板与静态
2013-12-21 11:34
169 查看
// 用静态数据成员实现数据共享
#include "stdafx.h"
#include <iostream>
class CountedClass
{
static int count;
public:
CountedClass() { ++count; }
CountedClass(const CountedClass&) { ++count; }
~CountedClass() { --count; }
static int getCount()
{
return count;
}
};
int CountedClass::count = 0;
int main()
{
CountedClass a;
std::cout<<CountedClass::getCount()<<std::endl;
CountedClass b;
std::cout<<CountedClass::getCount()<<std::endl;
{
CountedClass c(b);
std::cout<<CountedClass::getCount()<<std::endl;
a = c;
std::cout<<CountedClass::getCount()<<std::endl;
}
std::cout<<CountedClass::getCount()<<std::endl;
system("pause");
return 0;
}
// 当其计数类为父类时 如此共享数据失败
#include "stdafx.h"
#include <iostream>
class CountedClass
{
static int count;
public:
CountedClass() { ++count; }
CountedClass(const CountedClass&) { ++count; }
~CountedClass() { --count; }
static int getCount()
{
return count;
}
};
int CountedClass::count = 0;
class CountedClass1:public CountedClass {};
class CountedClass2:public CountedClass {};
int main()
{
CountedClass1 a;
std::cout<<CountedClass::getCount()<<std::endl; // 1
CountedClass1 b;
std::cout<<CountedClass::getCount()<<std::endl; // 2
CountedClass2 c;
std::cout<<CountedClass::getCount()<<std::endl; // 3 Error
system("pause");
return 0;
}
// 使用模板时,可以实现子类每一个类都有一个static int 静态变量
#include "stdafx.h"
#include <iostream>
using namespace std;
template<class T>
class CountedClass
{
static int count;
public:
CountedClass() { ++count; }
CountedClass(const CountedClass&) { ++count; }
~CountedClass() { --count; }
static int getCount()
{
return count;
}
};
template<class T>
int CountedClass<T>::count = 0;
class CountedClass1:public CountedClass<CountedClass1> {};
class CountedClass2:public CountedClass<CountedClass2> {};
int main()
{
CountedClass1 a;
std::cout<<CountedClass<CountedClass1>::getCount()<<std::endl; // 1
CountedClass2 b;
std::cout<<CountedClass<CountedClass2>::getCount()<<std::endl; // 1
system("pause");
return 0;
}
#include "stdafx.h"
#include <iostream>
class CountedClass
{
static int count;
public:
CountedClass() { ++count; }
CountedClass(const CountedClass&) { ++count; }
~CountedClass() { --count; }
static int getCount()
{
return count;
}
};
int CountedClass::count = 0;
int main()
{
CountedClass a;
std::cout<<CountedClass::getCount()<<std::endl;
CountedClass b;
std::cout<<CountedClass::getCount()<<std::endl;
{
CountedClass c(b);
std::cout<<CountedClass::getCount()<<std::endl;
a = c;
std::cout<<CountedClass::getCount()<<std::endl;
}
std::cout<<CountedClass::getCount()<<std::endl;
system("pause");
return 0;
}
// 当其计数类为父类时 如此共享数据失败
#include "stdafx.h"
#include <iostream>
class CountedClass
{
static int count;
public:
CountedClass() { ++count; }
CountedClass(const CountedClass&) { ++count; }
~CountedClass() { --count; }
static int getCount()
{
return count;
}
};
int CountedClass::count = 0;
class CountedClass1:public CountedClass {};
class CountedClass2:public CountedClass {};
int main()
{
CountedClass1 a;
std::cout<<CountedClass::getCount()<<std::endl; // 1
CountedClass1 b;
std::cout<<CountedClass::getCount()<<std::endl; // 2
CountedClass2 c;
std::cout<<CountedClass::getCount()<<std::endl; // 3 Error
system("pause");
return 0;
}
// 使用模板时,可以实现子类每一个类都有一个static int 静态变量
#include "stdafx.h"
#include <iostream>
using namespace std;
template<class T>
class CountedClass
{
static int count;
public:
CountedClass() { ++count; }
CountedClass(const CountedClass&) { ++count; }
~CountedClass() { --count; }
static int getCount()
{
return count;
}
};
template<class T>
int CountedClass<T>::count = 0;
class CountedClass1:public CountedClass<CountedClass1> {};
class CountedClass2:public CountedClass<CountedClass2> {};
int main()
{
CountedClass1 a;
std::cout<<CountedClass<CountedClass1>::getCount()<<std::endl; // 1
CountedClass2 b;
std::cout<<CountedClass<CountedClass2>::getCount()<<std::endl; // 1
system("pause");
return 0;
}
相关文章推荐
- 接口多态静态工厂设计模式模板设计模式
- 用模板页面 生成静态页面 实现文章分页
- Django1.4关于静态文件(css.js等)和模板路径的配置
- Laravel小项目之第2节 Laravel-静态资源管理及模板布局
- 解决 IntelliJ IDEA 无法热加载 Spring Boot 模板文件和静态资源文件
- AngularJS初始化静态模板
- 在动态库和静态库中使用模板(dynamic libraries ,static libraries)
- 利用模板将指定目录下的所有图片自动生成含多个分页的图片静态网页
- 不用模板,只用ASP+FSO生成静态HTML页的一个方法(对于内容密集型页面特别适用)
- springboot排除模板文件或静态文件修改时导致的热部署
- C++学习模板篇(静态数据成员与静态成员函数)
- 采集网页数据生成到静态模板newslist.html文件中(正则表达式)
- (十五)Core Java Eclipse的使用(快捷配置,模板代码.静态导入,自动拆装箱,享元设计模式) (112)
- 不用模板只用ASP+FSO生成静态HTML页的一个方法
- ecshop二次开发企业站步骤说明第一讲静态模板放在ecshop中并配置上
- C++模板中的静态
- 4000 Django-04.静态文件与模板详解(二)
- 生成静态分页模板
- django--静态文件路径和模板路径配置
- 1.虚函数的继承与派生;2.多文件静态对象的定义顺序,3模板注意,4mysql二、十六进制, 4颜色名称,5QSvgRenderer真实rect和viewboxrect转换