100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > C++ Primer 5th笔记(chap 16 模板和泛型编程)类模板和static

C++ Primer 5th笔记(chap 16 模板和泛型编程)类模板和static

时间:2018-06-11 18:37:26

相关推荐

C++ Primer 5th笔记(chap 16 模板和泛型编程)类模板和static

1. 定义

与任何其他static数据成员相同,模板类的每个static数据成员必须有且仅有一个定义。类模板的每个实例都有一个独有的static对象。

eg. Foo是一个类模板

有一个名为count的public static 成员函数一个名为ctr的private static数据成员。

每个Foo的实例都有其自己的static成员实例。即,对任意给定类型x,都有一个Foo: :ctr和一个Foo: : count成员。所有Foo类型的对象共享相同的ctr对象和count函数。

template <typename T> class Foo {public:static std: :size_ t count () {return ctr; }//其他接口成员private :static std: :size t ctr;//其他实现成员};//实例化static成员Foo<string>: :ctr和Foo<string>: :countFoo<string> fs;//所有三个对象共享相同的Foo<int>: :ctr和Foo<int>: :count成员Foo<int> fi, fi2, fi3; Foo<int> fi;//实例化Foo<int>类和static数据成员ctrauto ct = Foo<int>: :count() ; // 实例化Foo<int>: : countct = fi.count () ;//使用Foo<int>: :countct = Foo: :count() ;//错误:使用哪个模板实例的count?

1.1 变量初始化

template size t Foo: :ctr = 0; //定义并初始化ctr .

1.2 类似任何其他成员函数,一个static成员函数只有在使用时才会实例化。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。