嵌入式linux基础:c++(四)重载 指针 引用

简介: 嵌入式linux基础:c++(四)重载 指针 引用

1.重载 指针 引用

1671002957514.jpg

1.1 重载


函数名都是一样的,但是参数是不一样的,调用同一个函数名的函数。

#include <iostream>
using namespace std;
int add(int a, int b)
{
  cout<<"add int+int"<<endl;
  return a+b;
}
int add(int a, int b, int c)
{
  cout<<"add int+int+int"<<endl;
  return a+b+c;
}
double add(double a, double b)
{
  cout<<"add double+double"<<endl;
  return a+b;
}
double add(int a, double b)
{
  cout<<"add int+double"<<endl;
  return (double)a+b;
}
double add(double b, int a)
{
  cout<<"add double+int"<<endl;
  return (double)a+b;
}
int main(int argc, char **argv)
{
  add(1, 2);
  add(1, 2, 3);
  add(1.0, 2.0);
  add(1, 2.0);
  add(1.0, 2);
  return 0;
}


当我执行

add(1, 2);
add(1, 2, 3);
add(1.0, 2.0);
add(1, 2.0);
add(1.0, 2);

的时候,传入的参数是int,int,那么我的编译器是选择第一个函数,还是第二个函数。所以只能通过参数的不一样去重载函数,不能通过函数返回值的不一样去重载函数


1.2 指针与引用


#include <iostream>
using namespace std;
int add_one(int a)
{
  a = a+1;
  return a;
}
int add_one(int *a)//指针
{
  *a = *a + 1;
  return *a;
}
int add_one_ref(int &b)//引用
{
  b = b+1;
  return b;
}
int main(int argc, char **argv)
{
  int a = 99;
        int &c = a;
  cout<<add_one(a)<<endl;
  cout<<"a = "<<a<<endl;
  cout<<add_one(&a)<<endl;
  cout<<"a = "<<a<<endl;
  cout<<add_one_ref(a)<<endl;//和第一个一样,为什么 
  cout<<"a = "<<a<<endl;
        c++;
  cout<<"a = "<<a<<endl;
  cout<<"c = "<<c<<endl;
  return 0;
}


第一幅图,正常使用函数以及调用指针两者的区别。

1671003013191.jpg

第二,第三幅图是指引用的效果。b被a引用以后,b也就指向了a。

1671003019289.jpg

1671003026539.jpg


注意: 引用是如下所示,

int &b=a;


赋值的时候是变量,不能够是常数。

int &b=1;//这个是错的
相关文章
|
26天前
|
算法 C++
【算法】双指针+二分(C/C++
【算法】双指针+二分(C/C++
|
3月前
|
NoSQL Linux C语言
嵌入式GDB调试Linux C程序或交叉编译(开发板)
【8月更文挑战第24天】本文档介绍了如何在嵌入式环境下使用GDB调试Linux C程序及进行交叉编译。调试步骤包括:编译程序时加入`-g`选项以生成调试信息;启动GDB并加载程序;设置断点;运行程序至断点;单步执行代码;查看变量值;继续执行或退出GDB。对于交叉编译,需安装对应架构的交叉编译工具链,配置编译环境,使用工具链编译程序,并将程序传输到开发板进行调试。过程中可能遇到工具链不匹配等问题,需针对性解决。
|
4月前
|
存储 安全 C++
浅析C++的指针与引用
虽然指针和引用在C++中都用于间接数据访问,但它们各自拥有独特的特性和应用场景。选择使用指针还是引用,主要取决于程序的具体需求,如是否需要动态内存管理,是否希望变量可以重新指向其他对象等。理解这二者的区别,将有助于开发高效、安全的C++程序。
30 3
|
3月前
|
传感器 人工智能 网络协议
:嵌入式 Linux 及其用途
【8月更文挑战第24天】
153 0
|
4月前
|
C++ 索引 运维
开发与运维数组问题之在C++中数组名和指针是等价如何解决
开发与运维数组问题之在C++中数组名和指针是等价如何解决
29 6
|
4月前
|
Ubuntu 算法 Linux
嵌入式Linux的学习误区
**嵌入式Linux学习误区摘要** 1. **过度聚焦桌面Linux** - 许多学习者误将大量时间用于精通桌面Linux系统(如RedHat、Fedora、Ubuntu),认为这是嵌入式Linux开发的基石。 - 实际上,桌面Linux仅作为开发工具和环境,目标不应是成为Linux服务器专家,而应专注于嵌入式开发工具和流程。 2. **盲目阅读Linux内核源码** - 初学者在不了解Linux基本知识时试图直接研读内核源码,这往往导致困惑和挫败感。 - 在具备一定嵌入式Linux开发经验后再有针对性地阅读源码,才能有效提升技能。
41 4
|
4月前
|
存储 安全 编译器
【C++入门 四】学习C++内联函数 | auto关键字 | 基于范围的for循环(C++11) | 指针空值nullptr(C++11)
【C++入门 四】学习C++内联函数 | auto关键字 | 基于范围的for循环(C++11) | 指针空值nullptr(C++11)
|
5月前
|
存储 安全 编译器
【C++航海王:追寻罗杰的编程之路】引用、内联、auto关键字、基于范围的for、指针空值nullptr
【C++航海王:追寻罗杰的编程之路】引用、内联、auto关键字、基于范围的for、指针空值nullptr
64 5
|
5月前
|
存储 Java C#
C++语言模板类对原生指针的封装与模拟
C++|智能指针的智能性和指针性:模板类对原生指针的封装与模拟
|
5月前
|
C++
C++职工管理系统(类继承、文件、指针操作、中文乱码解决)
C++职工管理系统(类继承、文件、指针操作、中文乱码解决)
C++职工管理系统(类继承、文件、指针操作、中文乱码解决)