1. 类
成员变量,成员函数,私有变量,私有函数
1. 设计圆类
测试圆类:
2. 设计学生类
测试学生类:
2. 内联函数
1. 宏的缺陷
宏最好添加括号,如果添加了括号如例二还是会出现问题,宏函数没有作用域。
2. 内联函数
(1). 定义,没有inline关键字的函数不是内联函数
inline type function(type parameter){}
(2). 可以解决宏定义的缺陷
(3). 内联函数和普通函数的区别
内联函数的确占用空间,但是内联函数比较普通函数的优势在于省去了函数调用时候的压栈,跳转,返回的开销,可以理解为内联函数是用空间换取时间。
(4). 内联函数和编译器
c++的编译器对内联编译有一些显示,有些情况不考虑对函数进行内联编译
a. 不能存在任何形式的循环语句
b. 不能存在过多的条件判断语句
c. 函数体不能过于庞大
d. 不能对函数进行取址操作
内联仅仅是给编译器的一个建议,编译器不一定会接受这个建议,如果没有将函数声明为内联函数,那么编译器也可能对这个函数做内联编译,一个好的编译器会内联小的,简单的函数
4. 函数的参数
1. 函数的默认参数
函数的声明和实现只能有一个有默认参数。
2. 函数的占位参数
函数如果有占位参数,在调用这个函数的时候必须要提供这个参数
c语言中没有默认参数和占位参数
5. 函数的重载
1. 函数重载条件
在同一个作用域,函数的名称相同,函数的返回值必须相同
函数的参数不同,或者参数的类型不同,或者参数的顺序不同
2. 函数的重载遇到默认参数时,需要注意避免出现二义性
3. 引用的重载
4. 函数重载的原理
不同编译器原理不同,在Linux环境下:
5. extern “C”浅析
c++语言中调用c语言方法中。
方法一:不需要包含头文件,extern "C" void show();
方法二:如果有多个代码时
c++代码中包含头文件
c语言的头文件中使用如下方式:
6. C++的封装
1. c语言和c++封装的区别
c语言的封装,struct中不能有成员函数,将属性和行为分开处理了,类型检测不够
c++的封装:严格的类型检测,并且会将属性和行为放到一起
c++有控制权限:protected(保护权限) public (公共权限)private(私有权限),不加声明,默认是public
struct 和class除了默认权限不同,剩下的完全相同
protected:类的内部以及类的子类可以访问
class的默认权限是private,struct的默认权限是public
2. 建议将成员属性设置为私有,使用接口对成员变量访问
7. 面向对象设计案例
判断点和圆相对位置关系的案例
编写点类和圆类代码:
测试: