1.实现了泛型函数的语言特征被称作模板函数,位于模板之后的关键概念是,不同类型的对象仍然可以享有共同的行为特性。
2. typedef typename vector<T>: : size_type vec_sz;
typename 在这里的使用,是告诉系统环境,vector<T>: : size_type是一个类型名。
3.数据结构独立性
4.C++的类型可以分为两类:内部类型和自定义类型。
5.内部类型包括了 char int 和double
6.string,vector和stream都是自定义类型
7.自定义的类的接口也就是我们对类对象的操作
8.自定义类中,我们都使用了完整的限定名std::vector,std::string,是因为供他人使用的代码应该包含最少数量的必要声明。
9.我们在头文件中使用了完整的限定名,在对应的源文件中使用了适当的using 声明。若我们打算让程序正文出现在头文件之外,那么在编写的时候我们通常不会使用完整的限定名。
7.如果我们把::放在一个名称之前,那就表明了我们要使用这个名称的某一个版本,而所使用的这个版本不能是任何事物的成员。??????
8.常量成员函数,不可以改变正在由它们执行的对象的内部状态,所以我们可以用常量对象调用它。出于同样的原因,我们不能对常量对象调用非常量函数,这样会改变对象的状态。
9.如果函数会改变一个对象的状态,那它就应该作为这个对象的成员。但那些不会改变对象状态的函数,该如何处理,我们可以考虑一下这个函数是做什么的以及用户可能会希望以怎样的方式来调用它。
10.存取器函数,容许我们对一部分数据结构的访问,只读不写。
11.构造函数是一个特殊的成员函数,它定义了对象的初始化方式。一个构造函数不能被显示地调用。相反,在创建一个自定义类型的对象的时候,作为其副作用,一个适当的构造函数会被自动调用。