C++第三章:auto关键字、内联函数、引用、带默认形参值的函数、函数重载

 一、auto关键字

在C++中,auto关键字是一个类型说明符,用于自动类型推导。 

        使用 auto 关键字时,变量的类型 是在编译时由编译器 根据 初始化表达式 自动推导出来的。这意味着你 不能在 声明 auto 变量时 不进行初始化 == 声明 auto 变量时,必须初始化,因为编译器需要这个初始化表达式来确定变量的类型。

int a = 10;
auto b = a;//b也是int型

对于过长或难以拼写的类型,可以用auto代替。 

二、内联函数

        内联函数的定义与普通函数的定义方式几乎一样,只是需要使用关键字inline,语法形式如下:

inline 类型说明符 函数名(含类型说明的形参表)
{
        语句序列
}

        inline关键字主要是一个向编译器发出的优化建议,而不是一个强制性的命令。 

#include <iostream>  
  
// 声明内联函数  
inline int max(int a, int b) {  
    return (a > b) ? a : b;  
}  
  
int main() {  
    int x = 5, y = 10, z;  
    z = max(x, y); // 这里调用max函数,编译器可能会将其内联展开  
    std::cout << "The maximum is " << z << std::endl;  
    return 0;  
}

        在函数定义前加上inline关键字,我们请求编译器在可能的情况下将max函数的调用内联展开。这意味着,在main函数中调用max(x,y)时,编译器可能会直接将max函数的代码(即(a > b) ? a : b)插入到调用点,它会在调用点将函数的代码直接展开,而不是执行实际的函数调用。这意味着没有栈帧的创建和销毁也没有参数和返回值的显式传递
        内联展开可以减少函数调用的开销,并提高程序的执行效率,特别是对于小型且频繁调用的函数。

注:内联函数只放头文件,不放源文件 !!!

 三、引用&

 定义:

引用是某个变量的别名

特性:

  1. 引用必须在声明时就被初始化
  2. 一旦引用被初始化为某个变量,它就不能再指向另一个变量

例子: 

指针引用的 

  • 初始化:引用在声明时必须初始化,且之后不能改变;指针在声明时可以不立即初始化,成为野指针,但使用前必须确保它们已经指向了有效的内存地址
  • 灵活性指针比引用更灵活,因为它们可以在任何时候指向另一个地址;但这也使得指针更容易出错。
  • 安全性:引用在语法层面上提供了一定程度的安全性,因为编译器会检查引用的有效性;而指针需要程序员自己管理,更容易出现错误。
  • 用途引用通常用于函数参数传递返回值,以减少拷贝指针则更常用于动态内存管理、数据结构(如链表、树)的实现等场景。

 指针引用

  • 间接访问:引用和指针都允许通过间接的方式访问和操作变量的值,而不是直接访问变量本身。这是它们最核心的相似之处
  • 作为函数参数传递:在函数调用时,引用和指针都可以作为参数传递
  • 作为函数返回值:函数可以返回引用或指针,这样调用者就可以访问和操作函数内部创建或修改的变量的值。
  • 实现多态性:在面向对象编程中,引用和指针都可以用来实现多态性。通过基类引用或指针指向派生类对象,可以在运行时根据对象的实际类型来调用相应的虚函数。

四、带默认形参值的函数 

 注意:

 默认形参值必须往后面(右边)给,并且此后,默认形参值的右边的所有参数必须都带默认形参值。

五、函数重载 

        两个以上的函数,具有相同的函数名,但是形参的个数或者类型不同,编译器根据实参和形参的类型及个数的最佳匹配自动确定调用哪一个函数,这就是函数的重载。 

注意:

  • 重载函数的形参必须不同个数不同或者类型不同。
  • 编译程序对实参和形参的类型及个数进行最佳匹配,来选择调用哪一个函数。
  • 如果函数名相同,形参类型也相同(无论函数返回值类型是否相同),在编译时会被认为是语法错误(函数重复定义)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值