C++ Primer 5th笔记(chap 16 模板和泛型编程)类模板和static
Posted thefist11
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>: :count
Foo<string> fs;
//所有三个对象共享相同的Foo<int>: :ctr和Foo<int>: :count成员
Foo<int> fi, fi2, fi3;
Foo<int> fi;//实例化Foo<int>类和static数据成员ctr
auto ct = Foo<int>: :count() ; // 实例化Foo<int>: : count
ct = fi.count () ;//使用Foo<int>: :count
ct = Foo: :count() ;//错误:使用哪个模板实例的count?
1.1 变量初始化
template size t Foo: :ctr = 0; //定义并初始化ctr .
1.2 类似任何其他成员函数,一个static成员函数只有在使用时才会实例化。
以上是关于C++ Primer 5th笔记(chap 16 模板和泛型编程)类模板和static的主要内容,如果未能解决你的问题,请参考以下文章
C++ Primer 5th笔记(chap 16 模板和泛型编程)std::move
C++ Primer 5th笔记(chap 16 模板和泛型编程)模板特例化
C++ Primer 5th笔记(chap 16 模板和泛型编程)类模板特例化
C++ Primer 5th笔记(chap 16 模板和泛型编程)实例化