基本知识
- 必须在函数声明中声明默认参数!
- 默认参数必须在形参列表的结尾!避免歧义
- 函数声明就是函数的身份证,外部调用方不看定义只看声明
- 和 取地址 类似
函数
overload 函数重载
要求:
- 函数的名字相同
- 参数列表(数量,类型)不同
注意:与返回值无关
问题 --避免overload歧义
inline 内联函数
内联函数:指建议编译器编译时将某个函数在调用处直接展开,避免运行时调用开销。
内联函数的要求:若一函数功能简单,则函数调用的额外开销占比较高。
注意:inline只是建议
- 并不是写了 inline 关键字就一定会被内联,只是提出建议,由编译器决定是否采纳
- 内联这个动作发生在编译时,提升运行时的效率
面向对象
面向对象:既然随着系统参与实体的增多,过程变得复杂,那就不费力描述每一个可能的过程了,转而描述每一个实体。
实体=属性+行为
从面向过程到面向对象 对于问题:求解不同图形的周长和面积
class 类
每个实体 = 一个类class = 定义它的属性(成员变量) + 行为(成员函数)
例如:
class Circle {
private:
double radius;
public:
Circle(double radius) {
this->radius = radius;
}
double getRadius() {
return radius;
}
};
简单理解:结构体 + 行为(成员函数) = 类
- 事实上C++中也支持结构体定义成员方法,两者并无本质区别了
- 根据使用场景选择结构体或类:
•结构体:主要记录数据,极少行为(如资源配置信息、网络连接信息等)
•类:既有属性也有行为(如学生类、用户类、玩家类等)