标准库中涉及了很多C++的基础知识。比如,模板,异常处理等等。我首先复习的是模板部分。以前学C++的时候,虽然都看过了,但理解并不深刻。现在是温习并加深理解的时候了。
模板知识的复习我主要用《The C++ Programming Language》这本书。
下面是我在看书过程中记录下来的一些细节,主要是以我的角度选择的。(均引用书中原话)
P294:
“一般来说,typedef在缩短由模板生成的长名字方面很有用处。typedef basic_string<char> string;另外,typedef主要使我们可以隐藏起来某个类型是由模板生成的这一事实。”
P295:
“模板类的成员本身也是模板化,与它们所在模板类的参数一样,在类外定义这些成员时,就必须显示地将它们定义为模板。
template<class C> C String<C>::read(i)const
{
return rep->s[i];
} ”
“在一个程序里,对一个类成员函数只能有一个定义。同样,对于一个类模板成员函数,在一个程序里也只能有一个函数模板定义。但在另一个方面,重载只能针对函数去做,而专门化使我们能够为同一个模板提供不同的实现。”
“从一个模板类和一个模板参数生成一个类声明的过程通常被称为模板实例化。针对一个特定模板参数的模板版本被称为一个专门化。”
P.S:“实例化”实际上是一系列动作,“专门化”实际上是“实例化”的结果。
P296:
“一个模板可以有多个参数,template<clas T,T def_val>class const{...}。一个模板参数可以用于定义跟随其后的模板参数。”
“模板参数可以是常量表达式,具有外部连接的对象,或者函数的地址,或者非重载的指向成员的指针。”
“指针:&of。
函数:f()
到成员的指针:&X::of
1.字符串文字量不能接受为模板参数。
2.整数模板参数必须是常量。
3.一个非类型的模板参数在模板的内部是一个常量,企图修改这种参数的值就是一个错误。”
P298:
“与模板参数相关的错误能被检查出来的最早的位置,也就是在这个模板针对该特定模板参数的第一个使用点。这一点通常被称为第一个实例化点,简称:实例化点。”
本文地址:http://com.8s8s.com/it/it25036.htm