原标题:类模板的静态成员
#include
using namespace std;
// 类模板静态成员变量
template
class Test_StaticMember {
public:
static int data_;
};
// 静态成员变量必须先初始化(私有共有初始化方式相同)
// 如果类是模板,必须使用模板的方式初始化
// 例: int Test_StaticMember::data_ = 10; 是错误的
template
int Test_StaticMember::data_ = 10;
// 一般化设计
template
struct testClass {
testClass() {
cout << "I, O" << endl;
}
I data1_;
O data2_;
};
// 特殊处理
template
struct testClass {
testClass() {
cout << "T*, T*" << endl;
}
T data1_;
T data2_;
};
// 特殊处理
template
struct testClass {
testClass() {
cout << "const T*, T" << endl;
}
T data1_;
T data2_;
};
int main(void) {
testClass obj1;
obj1.data1_ = 111;
obj1.data2_ = 2.1;
cout << " => " << obj1.data1_ << ", " << obj1.data2_ << endl;
testClass obj2;
obj2.data1_ = 11;
obj2.data2_ = 12;
cout << " => " << obj2.data1_ << ", " << obj2.data2_ << endl;
testClass obj3;
obj3.data1_ = 22;
obj3.data2_ = 33;
cout << " => " << obj3.data1_ << ", " << obj3.data2_ << endl;
// linux 的特征宏
#ifdef __GNUC__
cout << "define __GNUC__" << endl;
#endif
Test_StaticMember a;
cout << a.data_ << endl;
cout << Test_StaticMember::data_ << endl;
cout << Test_StaticMember::data_ << endl;
return 0;
责任编辑: