侯捷-C++面向对象高级开发
1.头文件与类的声明
Object Based:面对的是单一的class的设计
Object Oriented:面对的是多重classes的设计,classes和classes之间的关系
Classes的两个经典分类:
- Class without pointer members(s)
complex
- Class with pointer member(s)
string
数据一般放在private,函数一般放在public,如果函数只想在类内部访问则页private
2.构造函数
扫描二维码关注公众号,回复:
13297631 查看本文章

构造函数用来创建对象
构造函数可以有多个—overloading(重载)
同名函数可以同时存在,在编译器看来不重名上图中后两个函数
重载常常发生在构造函数
上图第一二个构造函数在这里不能同时存在,可以写其他的构造函数
如果放入构造函数放入private
那么不允许外部创建对象
上图private中有两个构造函数。
单例模式,每个只能创建一个对象
3.参数传递与返回值
类中有两类函数,对于不会改变数据的函数加上const
上图右侧使用者认为不会改数据,而如果类中如果不加const那么类中实际上数据可以改,两者矛盾
值传递是将整个传过去,double四个字节就把四个字节的内容传过去。
我们尽量不要pass by value,传引用就相当于传指针,比较快
注意传引用改了后者前者也会跟着改变
如果我们为了速度并而且知道后者不会改进而不会影响前者,那么pass by reference to const,如果更改了那么编译就会出错
返回值的传递也应该尽量引用传递
正常从类外面不能拿private的数据,但是通过朋友可以直接拿数据
总结来说,当我们写一个类
- 数据写在private中
- 尽量用引用传递参数和返回值,是否加const依据实际情况而定
- 在类中的函数对于不会改变数据的函数加上const,如果不加使用者用时可以会报错
- 注意构造函数的initialization list
对于函数内的运算结果有两种处理情况,一种是存到传进来的参数中,一种是定义一个局部变量来存运算结果。
对于定义一个局部变量存运算结果的情景不能用返回引用,因为局部变量函数用完它后它的生命周期就会结束,因此传出去的引用那块内存空间也会被释放