勿在浮沙筑高台
5.31
随笔
1,转换函数:
有点像操作符重载
2,C++ 函数前面和后面 使用const 的作用:
前面使用const 表示返回值为const
后面加 const表示函数不可以修改class的成员
3,构造函数的列表初始化
4,**explict **
防止隐式类型转换
5,智能指针
像指针的类(指针也要封装)
6,迭代器
像指针的类(另外一种智能指针)
7,函数模板不用指定参数类型
参数会自动推导
8成员模板
9,疑问:父类指针指向子类对象,和子类指针指向父类对象可以吗?
在语法上,父类指针可以指向子类,子类通过强制类型转换(不安全)也能指向父类。
6,1
随笔
1,模板的偏特化
参数个数的偏特化
参数类型的偏特化
2,模板嵌套模板参数
3, 数量不定的模板参数
4,auto 关键字,(new)for 关键字
(new)for是值传递,如果要更改记得要传引用
5,引用
变量的别名,
很少用于变量的创建,多用于参数传递
6,继承与复合
复合关系也称为“has a”关系或“有”的关系,即一个类以另一个类的对象作为成员变量。
承关系也称为“is a”关系或“是”的关系,即派生类对象也是一个基类对象。
注:构造会先执行基类构造,再进行复合类的构造,析构相反
6,2
随笔
1,类占用的内存看它的data域
2,只要你的类里面有虚函数,类中就会含有虚指针(有切仅有一个),虚指针指向虚表
下图是虚指针和虚表的一些
3,Java就是垃圾(bushi)
4,静态绑定和动态绑定
5,知其然,知其所以然
6,通过指针调用才是多态,通过对象调用是的静态绑定
7,const修饰成员函数,不能修饰全局函数
8.如果函数内的数据不能被改变,但是"调用"它的成员函数没有const(不安全),则语法上行不通
9,成员函数的const可以作为函数重载的条件
10,规则:当成员函数的const和non-const版本同时存在,
const object只会(只能)调用const版本,non-const object只会(只能)调用non-const版本
11,C++所有的成员函数隐含带有this参数
6,3
随笔
1, 动态绑定函数的三个条件
通过指针调用
指针是向上转型后的指针
调用的函数是虚函数 2,所有的函数都是放在代码区的,不管是一般函数还是成员函数,成员函数中不管是一般成员函数还是静态成员函数;而sizeof访问的程序的数据区,所以不包含函数的大小