【C++进阶】引用 & 函数提高

简介: 【C++进阶】引用 & 函数提高

一 、引用

1.1 引用的基本使用

作用:给变量起别名

语法:数据类型 & 别名=原名

示例:

  int a = 10;
  int & b = a;
  cout <<"b= "<< b << endl;
  b = 20;
  cout << "a = " << a << endl;

'''输出''
    b= 1
    a = 20
1.2 引用的注意事项
  • 引用必须要初识化: 错误写法:int &b;
  • 引用一旦初始化化就不可以更改了,即b是a的别名,就不能是c的别名了
1.3 引用做函数参数

作用:函数传参时,可以利用引用的技术让形参修饰实参

优点:简化指针修改实参

using namespace std;
// 交换函数

// 1、值传递
void mySwap01(int a, int b)
{
  int tamp;
  tamp = a;
  a = b;
  b = tamp;
  cout << "mySwap01—a= " << a << endl;
  cout << "mySwap01—b= " << b << endl;
}

//2、地址传递

void mySwap02(int *a, int *b)
{
  int tamp;
  tamp = *a;
  *a = *b;
  *b = tamp;
}

//3、引用传递
void mySwap03(int &bei_a, int &bei_b)
{
  int tamp;
  tamp = bei_a;
  bei_a = bei_b;
  bei_b = tamp;
  cout << "bei_a=" << bei_a << endl;
}
int main()
{
  system("color 1E");
  
  int a = 10;
  int b = 20;
  //mySwap01(a, b); //值传递,形参不会影响实参
  //mySwap02(&a, &b); //地址传递,形参会修改实参的值
  mySwap03(a, b); //引用传递,形参也会修饰实参

  cout << "a= " << a << endl;
  cout << "b= " << b << endl;
  return 0;
}

1.4 引用的本质 :指针的常量

所有的指针操作都有编译器执行

system("color 1E");
  int a = 10;
  int & ref = a;
  cout << "a = " << a << endl;
  ref = 20;
  cout << "a = " << a << endl;
  cout << "ref = " << ref << endl;

1.5 常量引用

作用:修饰形参,防止误操作

void showValue(const int &val)
{
  //val = 1000;//在打印的函数修改数据,则原a的值也修改了 
  /*
    在函数上加const,则不能修改  
  */
  cout << " val = " << val << endl;
}
int main()
{
  system("color 1E");
  //防止误操作
  int a = 10;
  //const:编译器将代码修改临时的值,int temp=10;const int & ref=temp ->const & ref=10;加入const只能读,不能修改
  showValue(a);
  system("pause");  
  return 0;
}

二、函数提高

1 函数默认参数

函数的形参列表的形参是可以有默认值的。

语法:返回值类型 函数名 (参数=默认值){ }

注意:

  • 如果某个位置已经有默认参数,那么从这个位置之后,都必须有默认值
  • 如果函数的声明有默认参数,函数的实现就不能有默认参数.实现声明只能有一个默认参数(函数的声明int func(int a=10, int b=20)
//函数的默认参数
//如果我们自己传入数据,就用自己的数据,如果没有,就用默认值
//返回值类型 函数名 (参数=默认值){ }
int func(int a, int b=20, int c=30)
{
  return a + b + c;
}
int main()
{
  system("color 1E");
  cout << "a+b+c = " << func(10,30) << endl;
  system("pause");  
  return 0;
}
2 函数占位参数

作用:形参列表可以有占位参数,用来做占位,调用函数时必须填补该位置

语法:返回值类型 函数名 (数据类型){ } --------》现阶段了解

//函数的占位参数

//返回值类型 函数名 (数据类型){ }
void func(int a ,int)
{
  cout << "this is  func" << endl;
}
int main()
{
  system("color 1E");
  func(10,2);
  system("pause");  
  return 0;
}
3 函数重载

作用:函数名可以相同,提高复用性

函数重载满足条件:

  • 同一作用域下
  • 函数名称相同
  • 函数参数类型不同 或者 个数不同 或者 顺序不同

注意:

函数的返回值类型(void\int)不可以作为函数重载的条件

void func()
{
  cout << "func的调用" << endl;
}
void func(int a)
{
  cout << "func的调用—int" << endl;
}
void func(double a)
{
  cout << "func的调用—double" << endl;
}
int main()
{
  system("color 1E");
  func(0.2);
  func();
  func(2); 
  system("pause");  
  return 0;
}


相关文章
|
8天前
|
编译器 C++
【C++核心】函数的应用和提高详解
这篇文章详细讲解了C++函数的定义、调用、值传递、常见样式、声明、分文件编写以及函数提高的内容,包括函数默认参数、占位参数、重载等高级用法。
13 3
|
2月前
|
编译器 C++ 容器
【C++】String常见函数用法
【C++】String常见函数用法
17 1
|
2月前
|
C++
c++常见函数及技巧
C++编程中的一些常见函数和技巧,包括生成随机数的方法、制表技巧、获取数字的个位、十位、百位数的方法、字符串命名技巧、避免代码修改错误的技巧、暂停和等待用户信号的技巧、清屏命令、以及避免编译错误和逻辑错误的建议。
20 6
|
2月前
|
存储 C++
c++学习笔记05 函数
C++函数使用的详细学习笔记05,包括函数的基本格式、值传递、函数声明、以及如何在不同文件中组织函数代码的示例和技巧。
29 0
c++学习笔记05 函数
|
3月前
|
存储 安全 C++
浅析C++的指针与引用
虽然指针和引用在C++中都用于间接数据访问,但它们各自拥有独特的特性和应用场景。选择使用指针还是引用,主要取决于程序的具体需求,如是否需要动态内存管理,是否希望变量可以重新指向其他对象等。理解这二者的区别,将有助于开发高效、安全的C++程序。
25 3
|
2月前
|
存储 C++
【C/C++学习笔记】string 类型的输入操作符和 getline 函数分别如何处理空白字符
【C/C++学习笔记】string 类型的输入操作符和 getline 函数分别如何处理空白字符
32 0
|
2月前
|
Dart 编译器 API
Dart ffi 使用问题之在C++线程中无法直接调用Dart函数的问题如何解决
Dart ffi 使用问题之在C++线程中无法直接调用Dart函数的问题如何解决
|
2月前
|
存储 算法 搜索推荐
【C++】类的默认成员函数
【C++】类的默认成员函数
|
2月前
|
JavaScript C++
【C++ visual studio】解决VS报错:error C2447: “{”: 缺少函数标题(是否是老式的形式表?)【亲测有效,无效捶我】
【C++ visual studio】解决VS报错:error C2447: “{”: 缺少函数标题(是否是老式的形式表?)【亲测有效,无效捶我】
|
3月前
|
Rust 编译器 测试技术
Rust与C++的区别及使用问题之Rust中函数参数传递的问题如何解决
Rust与C++的区别及使用问题之Rust中函数参数传递的问题如何解决
下一篇
无影云桌面