《C++ Primer Plus(第六版)》(28)(第十四章 C++中的代码重用 笔记)
来源:互联网 发布:linux的home目录 编辑:程序博客网 时间:2024/05/29 14:26
1.初始化顺序是按照类定义中的顺序的。
2.私有继承,基类的公有成员和保护成员都变成派生类的私有成员。
在不进行显式类型转换的情况下,不能将派生类的引用或指针赋给基类引用或指针。
3.保护继承,公有成员变保护成员。
4.使用using可以改变基类私有变量的访问权限
class son: private Father{public: using Father::menber;}不管menber是函数还是数据成员,都是写个名字就行了。不需要带其它东西。
如果有重载函数,则重载函数都可用了。
一些非常旧的版本,可能是不需要写using关键字的。
5.虚基类(Virtual base class)
跟抽象基类不是一个概念的,使用了虚函数的那个叫做抽象基类。。。
虚基类用来解决多重继承的问题。
在继承的时候跟public写在一起。
6.在多重继承中,调用构造函数的时候,子类只能够调用父类的构造函数,更上一层的祖辈类是不能显示调用的。
但是对于虚基类,是可以的,而且,在父类的构造函数中,将不再调用父类的父类的构造函数,如果不显式写明,将使用默认构造函数。
说的有点抽象。
class A { public: A(int a) { _a = a; } int _a; }; class B :virtual public A//这里要声明虚基类,下面才能使用A的构造函数 { public: B(int a, int b) :A(a) { _b = b; } int _b; }; class C :public B { public: C(int a, int b, int c) :B(a, b), A(a)//这里的A(a),如果上面不声明了虚基类,是不能通过编译的。现在这样,B里面讲不再调用A(a)了。 { _c = c; } int _c; };
7.对于多重继承,其他方法的重复调用问题。好像没有新的语法来解决,只能通过改写代码,分拆函数功能来实现。
8.类模板的类型参数,可以提供默认值的。
template<typename T = int>class A{public:T get(){ return _a; }private:T _a;};不过<>还是要保留的。
可以这样声明变量
A<> a
隐式实例化,就是平时使用的那些,在声明对象的时候才生成实例。
显式实例化,是声明了显式的模板实例,但是没有对象生成的。
具体化,主要是修改具体的实现方式。
模板类还允许部分具体化。
//普通模板template<typename T1, typename T2> class Pair{};//部分具体化template<typename T1> class Par<T1, int>{};如果全部都具体化,就变成显式具体化了。
template<> class Par<int, int>{};
10.模板类的友元分为三类:
非模板友元
约束模板友元,友元的类型取决于类被实例化时的类型;
非约束模板友元,友元的所有具体化都是类的每个具体化的友元。
11.别名,C++11的东西
typedef const char* pc1;
using pc2 = const char*;
这两个语句是等价的。
12.到现在的内容,具体的说明开始越来越不重要了,关键还是多练,否则看的再多也不知道说啥。
1 0
- 《C++ Primer Plus(第六版)》(28)(第十四章 C++中的代码重用 笔记)
- C++Primer Plus(第六版) 第十四章 第一题
- C++Primer Plus(第六版) 第十四章 第五题
- 《C++ Primer Plus(第六版)》(29)(第十四章 C++中的代码重用 复习题答案)
- 《C++ Primer Plus(第六版)》(30)(第十四章 C++中的代码重用 编程题答案)
- c++primer第十四章c++代码重用(二)
- C++Primer学习笔记(代码重用)
- C++Primer Plus(第六版) 第六章 第二题
- C++Primer Plus(第六版) 第七章 第六题
- c++ Primer Plus(第六版)第十四章习题,写代码之路
- 2012/2/3 《C++ Primer Plus》第十四章:C++中的代码重用 学习笔记
- C++Primer Plus(第六版) 第八章 第二题
- C++Primer Plus(第六版) 第八章 第四题
- C++Primer Plus(第六版) 第十章 第八题
- C Primer Plus(第6版)第六章答案
- C++Primer Plus(第六版) 第十一章 第七题
- C++Primer Plus(第六版) 第十二章 第一题
- C++Primer Plus(第六版) 第十二章 第二题
- ubuntu 16.10下软件记录
- ubuntu 菜单栏移到下方
- Java_容器_Collection_增强for循环
- iOS - 开发中监听系统键盘删除按钮 , 回车按钮小技巧
- Eclipse构建Maven项目
- 《C++ Primer Plus(第六版)》(28)(第十四章 C++中的代码重用 笔记)
- 【9-1-6】链表的插入
- APNS 学习总结(三)
- 仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时
- MySQL里用一个表的数据更新另一个表
- jquery显示和隐藏
- Android So简单加固
- Android中的Fragment
- LaTex-merge pdfs into one file