勿在浮沙筑高台

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,只要你的类里面有虚函数,类中就会含有虚指针(有切仅有一个),虚指针指向虚表

下图是虚指针和虚表的一些 alt

3,Java就是垃圾(bushi)

4,静态绑定和动态绑定

5,知其然,知其所以然

6,通过指针调用才是多态,通过对象调用是的静态绑定

7,const修饰成员函数,不能修饰全局函数

8.如果函数内的数据不能被改变,但是"调用"它的成员函数没有const(不安全),则语法上行不通 alt

9,成员函数的const可以作为函数重载的条件

10,规则:当成员函数的const和non-const版本同时存在,

​ const object只会(只能)调用const版本,non-const object只会(只能)调用non-const版本

11,C++所有的成员函数隐含带有this参数

6,3

随笔

1, 动态绑定函数的三个条件

​ 通过指针调用

​ 指针是向上转型后的指针

​ 调用的函数是虚函数 alt 2,所有的函数都是放在代码区的,不管是一般函数还是成员函数,成员函数中不管是一般成员函数还是静态成员函数;而sizeof访问的程序的数据区,所以不包含函数的大小