C++编程(B)

Educn 134 templateclass t class c int compareconst

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: r>,10> b1; Buffer<char,10> b2; 编译器能对常量表达式求值, 左边10和20-10是同样的类型 Buffer<char,20-10> b3; Beijing University of Posts & Telecommunications Beijing young@buptnet.edu.cn 13.2.5 类型检查 模板定义时,要检查这个定义的语法错误, 编译器可以帮助捕捉一些简单的语义错误 与模板参数的使用有关的错误在模板使用之 前不可能检查出来 与模板参数相关的错误能被检查出来的最早 位置,也就是在这个模板针对该特定模板参 数的第一个使用点,被称为第一个实例化 点,简称实例化点 Beijing University of Posts & Telecommunications Beijing young@buptnet.edu.cn 类型检查示例 template<class T> class List { struct Link { Link* pre; Link* suc; T val; Link(Link* p, Link* s, const T& v) : pre(p), suc(s), val(v) {} } // 错误 Link* head; public: List() : head(7) {} // 错误 List(const T& t):head(new Link(0,o,t)) {} // 错误 void print_all() const { for(Link* p=head;p;p=p->suc) cout << p->val << '\n'; }}; class Rec{/*…*/}; void f(const List<int>& li, const List<Rec>& lr){ li.print_all(); // ok lr.print_all(); } // 错误,Rec没有定义<<运算符号 Beijing University of Posts & Telecommunications Beijing young@buptnet.edu.cn 13.3 函数模板 一般在应用了容器类(basic_string, vector, vector, list, map)后,就会提出 对于模板函数的要求 在调用模板函数时,函数参数的类型决定到 底应使用模板的哪...
View Full Document

Ask a homework question - tutors are online