C++ 突袭

发布时间 2023-08-19 18:11:27作者: kingwzun

基本知识

image

image

image

image

image

  • 必须在函数声明中声明默认参数!
  • 默认参数必须在形参列表的结尾!避免歧义
  • 函数声明就是函数的身份证,外部调用方不看定义只看声明

image

image

  • 和 取地址 类似

image
image

函数

overload 函数重载

image

要求:

  1. 函数的名字相同
  2. 参数列表(数量,类型)不同

注意:与返回值无关

image

问题 --避免overload歧义
image
image

image

inline 内联函数

image

内联函数:指建议编译器编译时将某个函数在调用处直接展开,避免运行时调用开销。

内联函数的要求:若一函数功能简单,则函数调用的额外开销占比较高。

image

注意:inline只是建议

  • 并不是写了 inline 关键字就一定会被内联,只是提出建议,由编译器决定是否采纳
  • 内联这个动作发生在编译时,提升运行时的效率
    image

面向对象

面向对象:既然随着系统参与实体的增多,过程变得复杂,那就不费力描述每一个可能的过程了,转而描述每一个实体。
实体=属性+行为

从面向过程到面向对象 对于问题:求解不同图形的周长和面积
image

image

class 类

每个实体 = 一个类class = 定义它的属性(成员变量) + 行为(成员函数)
image
例如:

class Circle {
private:
    double radius;
public:
    Circle(double radius) {
        this->radius = radius;
    }
    double getRadius() {
        return radius;
    }
};

简单理解:结构体 + 行为(成员函数) = 类

  • 事实上C++中也支持结构体定义成员方法,两者并无本质区别了
  • 根据使用场景选择结构体或类:
    •结构体:主要记录数据,极少行为(如资源配置信息、网络连接信息等)
    •类:既有属性也有行为(如学生类、用户类、玩家类等)