关于模板类中静态成员
2015-11-18 12:22
274 查看
类模板实例化的每个模板类都有自己的类模板静态数据成员,该模板类的所有对象共享一个静态数据成员。
比如int的所有实例共享一个静态数据成员,char的所有实例共享一个。
下面来看个例子:
#include <iostream>
using namespace std;
template <typename T>
class testClass{
public:
static int _data;
};
int testClass<int>::_data = 1; //对静态成员进行初始化
int testClass<char>::_data = 2;
int main()
{
cout << testClass<int>::_data << endl;
cout << testClass<char>::_data << endl;
testClass<int> obji1, obji2;
testClass<char> objc1, objc2;
cout << obji1._data << endl;
cout << obji2._data << endl;
cout << objc1._data << endl;
cout << objc2._data << endl;
obji1._data = 3;
objc2._data = 4;
cout << obji1._data << endl;
cout << obji2._data << endl; //相同类(int)的实例共用一个
cout << objc1._data << endl;
cout << objc2._data << endl;
return 0;
}
注意:如果不是模板类,则所有的类实例共享一个静态成员。
比如int的所有实例共享一个静态数据成员,char的所有实例共享一个。
下面来看个例子:
#include <iostream>
using namespace std;
template <typename T>
class testClass{
public:
static int _data;
};
int testClass<int>::_data = 1; //对静态成员进行初始化
int testClass<char>::_data = 2;
int main()
{
cout << testClass<int>::_data << endl;
cout << testClass<char>::_data << endl;
testClass<int> obji1, obji2;
testClass<char> objc1, objc2;
cout << obji1._data << endl;
cout << obji2._data << endl;
cout << objc1._data << endl;
cout << objc2._data << endl;
obji1._data = 3;
objc2._data = 4;
cout << obji1._data << endl;
cout << obji2._data << endl; //相同类(int)的实例共用一个
cout << objc1._data << endl;
cout << objc2._data << endl;
return 0;
}
注意:如果不是模板类,则所有的类实例共享一个静态成员。
相关文章推荐
- MySQL:性能优化
- C-1.基础知识
- mac os x使用Git简易入门教程
- MySQL:MySQL日志
- 根据status 对mysql进行性能优化
- char*与System::String^的相互转换
- Unity Shader 剔除黑色背景
- MySQL:数据备份与还原
- MySQL:用户管理
- swift学习基础代码1
- php学习之连接数据库微型博客
- intent打开第三方应用
- MySQL:触发器
- [LeetCode] Additive Number 加法数
- OCP考点实战演练01-备份恢复篇
- sqlnet.ora configuration for toad
- MySQL:视图
- 父窗口和iframe子窗口之间相互传递参数和调用函数或方法
- STM32F103 与 STM32F207/407编程的区别自我总结
- ViewPage+Fragment的使用用法