一、自定义函数VS宏函数
1、自定义函数: 通过函数名找到函数存放的位置,给形参分配空间,传参,执行函数体内的语句,函数返回,释放空间。
2、宏函数:宏替换,省去了形参以及函数体内需要分配的空间,还省去了函数调用传参,函数返回等过程,节省时间,提高运行效率。
#define add(a,b) a+b
省去了形参以及函数体里需要分配的空间;
省去了函数调用,传参、函数返回、释放等过程(运行效率);
二、宏函数VS 内联函数(inline修饰函数)
1、宏函数:编译时间换取内存空间
——宏函数的使用时机:频繁调用且功能简单的函数
2、内嵌(联)函数:内存空间换取运行时间
三、函数重载
1、函数重载的定义?
——可以使用已存在函数名,但是该函数的形参的个数或者顺序或者类型与已存在函数不同;(返回值不能作为重载条件)
2、函数重载的条件?
——函数的形参的个数或者顺序或者类型与已存在函数不同
3、注意事项:
——c++允许函数形参表中有默认参数,可能会破坏重载条件
——默认参数:int add (int a,int b,int c=2)
一个参数为默认参数,那么它后面的参数必须全部为默认参数
——函数的形参占位符:int add (int a,int b,int)
——函数重载与函数指针:
4、函数重载的例子:
四、结构体struct升级
1、什么是结构体?
——封装不同类型的数据(将不同类型的数据整合在一起,用同一种数据类型表示
2、C语言中的结构体:
struct student
{
int num;
char name;
};
——定义结构变量必须加struct关键字;
struct student s1;
——只能存放变量,不能存放函数;
代码案例:
3、C++ 中struct升级
——1)可以在结构体内部进行函数的申明,在结构体外部写函数体
——2)在struct内部实现函数和在外部实现函数:在内部实现的函数可能被编译器修饰为inline内联函数
——3)可以在结构体里加入权限修饰符:
public 公有权限 ,能够被外界访问
private 私有权限 ,不能在外部访问,但是可以在结构体内部访问 (这时候引入set和get函数)
protected 保护权限
——4)可继承,可多态 struct==class类
1、叫法的不同:
//结构体变量 = 类的对象 变量 = 对象
/函数称之为方法,结构里存放的变量称之为属相或者成员变量
2、class 与struct的区别:
/默认权限不同,class默认是private, struct默认是public
3、面向对象的代码结果分为三部分:
定义类: student.h文件
类的实现:student.cpp文件
最终完整的实现:main.cpp文件
代码案例:
student.h代码
student.app代码:
main.app代码: