嵌入式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;//这个是错的
相关文章
|
1月前
|
网络协议 安全 Linux
Linux C/C++之IO多路复用(select)
这篇文章主要介绍了TCP的三次握手和四次挥手过程,TCP与UDP的区别,以及如何使用select函数实现IO多路复用,包括服务器监听多个客户端连接和简单聊天室场景的应用示例。
86 0
|
1月前
|
存储 Linux C语言
Linux C/C++之IO多路复用(aio)
这篇文章介绍了Linux中IO多路复用技术epoll和异步IO技术aio的区别、执行过程、编程模型以及具体的编程实现方式。
72 1
Linux C/C++之IO多路复用(aio)
|
1月前
|
资源调度 Linux 调度
Linux c/c++之进程基础
这篇文章主要介绍了Linux下C/C++进程的基本概念、组成、模式、运行和状态,以及如何使用系统调用创建和管理进程。
33 0
|
1月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
254 3
|
1月前
|
资源调度 Linux 调度
Linux C/C++之线程基础
这篇文章详细介绍了Linux下C/C++线程的基本概念、创建和管理线程的方法,以及线程同步的各种机制,并通过实例代码展示了线程同步技术的应用。
26 0
Linux C/C++之线程基础
|
1月前
|
Linux C++
Linux C/C++之IO多路复用(poll,epoll)
这篇文章详细介绍了Linux下C/C++编程中IO多路复用的两种机制:poll和epoll,包括它们的比较、编程模型、函数原型以及如何使用这些机制实现服务器端和客户端之间的多个连接。
23 0
Linux C/C++之IO多路复用(poll,epoll)
|
1月前
|
网络协议 Linux 网络性能优化
Linux C/C++之TCP / UDP通信
这篇文章详细介绍了Linux下C/C++语言实现TCP和UDP通信的方法,包括网络基础、通信模型、编程示例以及TCP和UDP的优缺点比较。
35 0
Linux C/C++之TCP / UDP通信
|
1月前
|
消息中间件 Linux API
Linux c/c++之IPC进程间通信
这篇文章详细介绍了Linux下C/C++进程间通信(IPC)的三种主要技术:共享内存、消息队列和信号量,包括它们的编程模型、API函数原型、优势与缺点,并通过示例代码展示了它们的创建、使用和管理方法。
29 0
Linux c/c++之IPC进程间通信
|
1月前
|
Linux C++
Linux c/c++进程间通信(1)
这篇文章介绍了Linux下C/C++进程间通信的几种方式,包括普通文件、文件映射虚拟内存、管道通信(FIFO),并提供了示例代码和标准输入输出设备的应用。
23 0
Linux c/c++进程间通信(1)
|
1月前
|
Linux C++
Linux c/c++之进程的创建
这篇文章介绍了在Linux环境下使用C/C++创建进程的三种方式:system函数、fork函数以及exec族函数,并展示了它们的代码示例和运行结果。
31 0
Linux c/c++之进程的创建