关于模板类中静态成员

原创 2015年11月18日 12:22:01

类模板实例化的每个模板类都有自己的类模板静态数据成员,该模板类的所有对象共享一个静态数据成员。

比如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;
}

注意:如果不是模板类,则所有的类实例共享一个静态成员。


版权声明:本文为博主原创文章,未经博主允许不得转载。

自动化1121和1122班学生链接

自动化1121班花名册(33人)     2101 蔡金辉         2102 陈浩佳         2103 陈家俊         2104 陈俊杰        2105陈泽强 ...

Jenkins + Git + fir 构建并分发 iOS 项目

项目的构建          准备工作我们都已经OK了,下面我们就可以创建一个新的任务用来构建我们的iOS项目,在Jenkins的主界面的左侧菜单点击“新建”,填写任务名称后,选择第一个“构建一个自由...

一个猥琐的方法:解决模板类静态成员重定义的问题

C++类静态成员必须显示定义,而模板类要写在一个.h文件里,于是出现下面这总情况: //some_template.h template class T> class some_clas...

对象的赋值与复制,静态成员 友元 类模板

一、对象的赋值和复制 1、对象的赋值 如果对一个类定义了两个或多个对象,则这些同类的对象之间可以互相赋值,或者说,一个对象的值可以赋给另一个同类的对象。这里所指的对象的值是指对象中所有数据成员的值...

类模板2——静态成员以及非类型的类模板参数

一、类模板的静态成员 1、概念:与普通类中的静态成员类似,模板类中的静态成员并不仅仅属于某一个对象,它可以实现对象之间的数据共享,静态成员包括:静态数据成员和静态函数成员。 2、初始化:静态数据成...

静态成员,友元,模板

静态成员 同类的多个成员实现数据共享(全局变量破坏封装性,但静态成员要注意作用域) ●静态数据成员 1.只能在类体外初始化,通过类名引用(而不是对象) 2.在类外可以用对象引用公共静态数据成员,也可用...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于模板类中静态成员
举报原因:
原因补充:

(最多只允许输入30个字)