C++ Primer(第四版)笔记
来源:互联网 发布:android放弃java 编辑:程序博客网 时间:2024/04/30 15:47
本文原创,转载请注明出处:http://blog.csdn.net/banket004
文摘和总结:
模板和泛编程
1.类模板的成员函数只有为程序使用才进行实例化.如果某函数从未使用,则不会实例化该成员函数.
2.非类型模板实参必须是编译时常量表达式.
3.当成员模板是类模板的成员时,它的定义必须包含类模板形参和自己的模板形参.首先是类模板形参表,后面接着成员自己的形参表.格式如:
Template<class T> Template<class Iter>
void Queue<T>::assign(Iter begin, Iter end)....
与其他成员一样,成员模板只有在程序使用时才进行实例化.类模板形参由调用函数的对象的类型决定,成员定义的模板形参的行为和普通函数模板一样,形参都通过"常规模板实参推断"而定.
4.模板特化.是指模板中一个或多个模板形参的实际类型或实际值是指定的.特化的形式如下:
关键字Template后面接一对空尖括号(<>);
再接模板名和一对尖括号,尖括号中指定这个特化定义的模板形参(尖括号及其里面的内容可省略);
函数形参表;
函数体.
代码示例:
Template<class T>
int compare(const T &val1, const T &val2);
当模板形参绑定到const char* 时,compare函数特化如下:
Template<>
int compare(const char* const &val1, const char const &val2);
多继承与虚继承
1.通常每个类只初始化自己的直接基类.但在虚继承的情况下,由最低层派生类的构造函数初始化虚基类.
虽然虚基类由最低层派生类初始化,但任何任何直接或间接继承虚基类的派生类一般也必须为该虚基类提供自己的初始化式.只要可以创建虚基类派生类类型的独立对象,该类就必须初始化自己的虚基类,这些初始化式只在创建中间类型的对象使用.
2.无论虚基类出现在继承层次的任何地方,总是在构造非虚基类之前构造虚基类.
3.基类的构造次序由派生类的派生列表次序决定,派生类的构造函数初始化列表中指定的基类次序不影响构造基类的次序.
表达式
逗号操作符
逗号表达式是一组由逗号组成的表达式,这些表达式从左向右计算.如:
int a, b, c, d;a = 1;b = 2;c = a, b;d = (a, b);c的值为1,d的值为2.在"c=a,b;"语句中,因为赋值操作符的优先级比逗号操作符高,所以是先执行"c=a".在"d=(a,b);"语句中,"(a,b)"的结果是b,所以实际上等于d=b(=2).
书中错误:
1. P513,L16-L18(513页,16-18行):
"WordQuery和NotQuery类具有系统中其他类所没有的一个性质...WordQuery和NotQuery类将继承BinaryQuery类"这个文字中的"WordQuery"和"NotQuery"应该是"AndQuery"和"OrQuery".
待续....
- C++Primer (第四版) 重点笔记
- <C++Primer>第四版 阅读笔记 第一部分 “基本语言”
- 《C++primer》第五版 第四章 第五章 笔记
- C++primer第五版第四章学习笔记
- C++ Primer(第四版)笔记
- C++ Primer第四版 笔记
- C++ Primer第四版笔记
- C++primer plus阅读笔记第四章
- C++primer 第四章笔记 初稿
- <C++Primer>第四版 阅读笔记 第四部分 “面向对象编程与泛型编程”
- c++primer(第四版)习题10.18
- C++Primer 第四版的代码问题
- 《c++primer(第四版)》习题8.6
- 《c++primer(第四版)》习题8.7
- 《c++primer(第四版)》习题8.9
- 《c++primer(第四版)》习题8.16
- 《c++primer(第四版)》习题11.9
- 《c++primer(第四版)》习题11.10
- linux修改防火墙端口 iptables
- Kernel PCA 原理和演示
- curl使用简单介绍
- php位运算
- Android基础类之BaseAdapter
- C++ Primer(第四版)笔记
- 去除 listview Gridview 滑动到边界 的 阴影
- SRM 441 DIVII 250概述及源码(C语言版)
- 教你制作手机电子书android应用 无技术要求
- PHPCMS 2008 SP3 常用函数
- dev C++ 不能调试的解决方法
- C#实现微信聊天对话框
- 如何利用Microsoft Web Browser控件在VC中创建一个属于自己的浏览器
- 测试视频网站