C++第四篇--重载_指针_引用

1. 基础知识

重载:函数名相同,根据参数不同(类型、数量、顺序不同)调用同名函数

指针和引用:引用就是别名,引用时必须初始化,引用你定义的变量。

int a;
int &b=a; //b即为a的别名

2. 重载

main.cpp
#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;
} int add(double a,double b){
cout<<"add double + double"<<endl;
return a+b;
} int add(int a,double b){
cout<<"add int + double"<<endl;
return (double)a+b;
} int add(double b,int a){
cout<<"add int + double"<<endl;
return a+(double)b;
} int main(int argc,char **argv){
add(1,2);
add(1,2,3);
add(1.0,2.0);
add(1.0,2);
add(1,2.0);
return 0;
}

程序运行结果:

add int + int
add int + int + int
add double + double
add int + double
add int + double

结论:说明根据函数的参数的不同,可以调用不同的同名函数,但是不可以根据返回值的类型不同调用函数。

3. 指针_引用

main.cpp
#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;
}

程序运行结果:

100
a=99
100
a=100
101
a=101
a=102
c=102

结论:上述结果可以说明,普通传参数只是将99这个数值传入,对99这个数值进行操作,并没有对a所在的内存进行操作,而指针操作便是a所在的内存进行操作,但是为了避免指针使用不恰当引起的巨大影响,C++引入引用,便是一个变量的别名,指向的是同一个内存地址,故对该引用进行操作,这是对该变量操作,十分方便。

C++第四篇--重载_指针_引用的更多相关文章

  1. C++_系列自学课程_第_8_课_指针和引用_《C++ Primer 第四版》

    C语言最富有迷幻色彩的部分当属指针部分,无论是指针的定义还是指针的意义都可算是C语言中最复杂的内容.指针不但提供给了程序员直接操作硬件部分的操作接口,还提供给了程序员更多灵活的用法.C++继承这一高效 ...

  2. c++对c的拓展_指针的引用

    套用引用公式:Type & ref =val; 假设:type 类型为int * 由公式得 int * & ref = val; // int * *const ref=&va ...

  3. C++篇:第四章_函数_知识点大全

    C++篇为本人学C++时所做笔记(特别是疑难杂点),全是硬货,虽然看着枯燥但会让你收益颇丰,可用作学习C++的一大利器 五.函数 (一)函数使用规则 函数的定义不能嵌套但调用可以嵌套 在函数调用时,如 ...

  4. ca71a_c++_指向函数的指针_通过指针调用函数txwtech

    /*ca71a_c++_指向函数的指针_通过指针调用函数用typedef简化函数指针的定义简化前: bool(*pf)(const string&, const string &); ...

  5. 从IL角度彻底理解回调_委托_指针

    从IL角度彻底理解回调_委托_指针 目录 从IL角度彻底理解回调_委托_指针 1.创作此文的背景 1.1.委托能帮助代码更好地封装 1.2.委托能随时随地更方便地运行其他类中的方法 1.3.委托非常适 ...

  6. C++篇:第八章_类_知识点大全

    C++篇为本人学C++时所做笔记(特别是疑难杂点),全是硬货,虽然看着枯燥但会让你收益颇丰,可用作学习C++的一大利器 八.类 (一)类的概念与规则 "子类"和"子类型& ...

  7. C/C++:提升_指针的指针和指针的引用

    C/C++:提升_指针的指针和指针的引用 写在前面 今天在使用指针的时候我发现了一个自己的错误.

  8. 小猪猪C++笔记基础篇(四)数组、指针、vector、迭代器

    小猪猪C++笔记基础篇(四) 关键词:数组,Vector. 一.数组与指针 数组相信大家学过C语言或者其他的语言都不陌生,简单的就是同一个变量类型的一组数据.例如:int a[10],意思就是从a开始 ...

  9. C++_系列自学课程_第_11_课_类型转换_《C++ Primer 第四版》

    上次说了关于表达式的一些内容,说到还有一些关于数据类型转换的内容,今天我们接着八一八C++中的数据类型转换. 一.隐式类型转换 在表达式中,有些操作符可以对多种类型的操作数进行操作, 例如 + 操作符 ...

随机推荐

  1. C++如何入门

    去 Visual Studiohttps://www.visualstudio.com/zh-hans/?rr=https%3A%2F%2Flink.zhihu.com%2F%3Ftarget%3Dh ...

  2. maven 创建后报错

    <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId& ...

  3. 深度解析 H.265 视频解决方案

    又拍云上线了 H.265 从编码解码到 CDN 分发,完整的端到端的自适应解决方案:提供视频上传.视频存储.视频编码.视频分发适配.视频解码等功能.又拍云希望能以云服务的方式将大公司才能长期支付使用的 ...

  4. 【FPGA】高斯白噪声的Verilog实现

    本文章主要讨论高斯白噪声的FPGA实现.简单的方法可以采用在Matlab中产生服从一定均值和方差的I.Q两路噪声信号.然后将两组数据存在FPGA中进行回放,以此来产生高斯白噪声.这种方法优点是产生方法 ...

  5. sublime 新手代码提示

    有提示的    你按   table   试试这就是按过的结果   是不是很方便这是按后的效果      是不是很方便 下面是各种简写效果html <html></html> ...

  6. CentOS7安装使用Docker

    安装 Docker 官方为了简化安装流程,提供了一套安装脚本,CentOS 系统上可以使用这套脚本安装: curl -sSL https://get.docker.com/ | sh 执行这个命令后, ...

  7. Windows窗口的尺寸和位置

    介绍 窗口的大小和位置表示为一个矩形边界,该矩形的坐标是相对于屏幕或父窗口而言的.顶级窗口的坐标是相对于屏幕的左上角而言的,子窗口的坐标则是相对于父窗口的左上角而言.应用程序创建窗口时(CreateW ...

  8. canvas水波纹效果

    先看效果 演示效果 自然界中水波纹效果十分麻烦,我这里只是根据水波纹的几个特性,在理想环境下模拟水波纹的扩散效果. 这里应用到的属性有:扩散.波动.折射. 扩散:很好理解,水波纹会从触发原点开始向周围 ...

  9. SQL储存过程

    基本语法 创建存储过程 create procedure sp_name @[参数名] [类型],@[参数名] [类型] as begin ......... end 以上格式还可以简写成: crea ...

  10. Ubuntu常用软件包管理命令

      1.查看软件包xxx安装内容 #dpkg -L xxx  例子: #dpkg -L binutils    //查看安装binutils包会安装哪些文件   2.列出系统已安装的或指定deb包的安 ...