C++ 函数和类
函数
1.内联函数
inline int Max(...){};
作用:减少函数调用的开销,在编译时将语句替换为函数体,适用于执行时间短且调用此时多的函数。
2.函数重载
函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表(个数,类型,排列顺序)的函数,这组函数被称为重载函数。
-
函数的返回类型可以相同也可以不相同。 但仅仅返回类型不同不足以成为函数的重载。
-
减少了函数名的数量,避免了名字空间的污染,对于程序的可读性有很大的好处。
-
函数重载是一种静态多态
-
最准确的重命名映射机制为:作用域+返回类型+函数名+参数列表。
-
与C语言的区别:在C语言中,编译器在编译.c文件时,只会给函数进行简单的重命名;具体的方法是给函数名之前加上"_"。所以加入两个函数名相同的函数在编译之后的函数名也照样相同,调用者会因为不知道到底调用那个而出错,故C语言中没有函数重载
3.缺省函数
调用函数时可以省略右边部分的参数值,此时默认使用定义的缺省值(默认值),利于函数功能扩展。
int fun(int x1, int x2 = 3, int x3 = 5){};
fun(3); //合法,相当于fun(3,3,5)
fun(3,5); //合法,相当于fun(3,5,5)
fun(3, ,8); //非法,只能省略右边参数
类
1.结构化程序设计(C语言)
程序 = 数据结构 + 算法
2.面向对象程序
程序 = 对象 + 对象 + 对象……
3.类
如何定义:
(1)成员变量(特点)
(2)成员函数(行为或功能),该过程称为“抽象”
- 成员函数定义可以写在类的外部(在内部仅声明)
void A::area(){
...
}
-
值得注意的是,在外部定义函数时,要在前面加上"A::",说明该函数是A的成员函数,该函数一定要通过对象或对象的指针进行调用
-
成员函数可以重载或带缺省参数
(3)封装
(4)访问范围关键字:说明类成员可被访问的范围
- private: 私有成员,只能在成员函数内访问(默认)
- public: 公有成员,可在任何地方被访问
- protected: 保护成员
(5)在类的成员函数内部,可访问:
- 当前对象的全部属性、函数;
- 同类其他对象的全部属性、函数;
比如
void A::getMax(A a1, A a2){
cout<<max(a1.val, a2.val); //访问同类A的其他对象a1,a2
}
(6)“隐藏”机制 即设置private私有成员的机制,目的是强制对成员变量的访问一定要通过(公有)成员函数来进行。则如果成员变量类型改变,只需更改成员函数即可。
4.对象的存储方式
每个对象的存储空间等于成员变量存储空间之和。 (成员函数只存储一份,被所有同类型对象所共享)
5.使用方式
对象名.成员名;指针->成员名;引用名.成员名
Test obj;
Test *p;
Test &obj2 = obj;
obj.x1 = 5;
p->x1 = 5;
obj2.x1 = 5;
//上三条语句等价
https://www.bilibili.com/video/BV1Ns411n7ui?p=5
程序设计与算法(三)C++面向对象程序设计