嵌入式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;//这个是错的
相关文章
|
8天前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
61 13
|
6月前
|
网络协议 算法 Linux
【嵌入式软件工程师面经】Linux网络编程Socket
【嵌入式软件工程师面经】Linux网络编程Socket
200 1
|
3月前
|
Linux
在Linux内核中根据函数指针输出函数名称
在Linux内核中根据函数指针输出函数名称
|
4月前
|
NoSQL Linux C语言
嵌入式GDB调试Linux C程序或交叉编译(开发板)
【8月更文挑战第24天】本文档介绍了如何在嵌入式环境下使用GDB调试Linux C程序及进行交叉编译。调试步骤包括:编译程序时加入`-g`选项以生成调试信息;启动GDB并加载程序;设置断点;运行程序至断点;单步执行代码;查看变量值;继续执行或退出GDB。对于交叉编译,需安装对应架构的交叉编译工具链,配置编译环境,使用工具链编译程序,并将程序传输到开发板进行调试。过程中可能遇到工具链不匹配等问题,需针对性解决。
152 3
|
4月前
|
传感器 人工智能 网络协议
:嵌入式 Linux 及其用途
【8月更文挑战第24天】
219 0
|
5月前
|
Ubuntu 算法 Linux
嵌入式Linux的学习误区
**嵌入式Linux学习误区摘要** 1. **过度聚焦桌面Linux** - 许多学习者误将大量时间用于精通桌面Linux系统(如RedHat、Fedora、Ubuntu),认为这是嵌入式Linux开发的基石。 - 实际上,桌面Linux仅作为开发工具和环境,目标不应是成为Linux服务器专家,而应专注于嵌入式开发工具和流程。 2. **盲目阅读Linux内核源码** - 初学者在不了解Linux基本知识时试图直接研读内核源码,这往往导致困惑和挫败感。 - 在具备一定嵌入式Linux开发经验后再有针对性地阅读源码,才能有效提升技能。
|
6月前
|
消息中间件 安全 Java
【嵌入式软件工程师面经】Linux多进程与多线程
【嵌入式软件工程师面经】Linux多进程与多线程
82 1
|
6月前
|
存储 缓存 Unix
【嵌入式软件工程师面经】Linux文件IO
【嵌入式软件工程师面经】Linux文件IO
54 1
|
1月前
|
存储 C语言
C语言如何使用结构体和指针来操作动态分配的内存
在C语言中,通过定义结构体并使用指向该结构体的指针,可以对动态分配的内存进行操作。首先利用 `malloc` 或 `calloc` 分配内存,然后通过指针访问和修改结构体成员,最后用 `free` 释放内存,实现资源的有效管理。
120 13
|
2月前
|
C语言
无头链表二级指针方式实现(C语言描述)
本文介绍了如何在C语言中使用二级指针实现无头链表,并提供了创建节点、插入、删除、查找、销毁链表等操作的函数实现,以及一个示例程序来演示这些操作。
37 0