C++第四篇--重载_指针_引用
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++第四篇--重载_指针_引用的更多相关文章
- C++_系列自学课程_第_8_课_指针和引用_《C++ Primer 第四版》
C语言最富有迷幻色彩的部分当属指针部分,无论是指针的定义还是指针的意义都可算是C语言中最复杂的内容.指针不但提供给了程序员直接操作硬件部分的操作接口,还提供给了程序员更多灵活的用法.C++继承这一高效 ...
- c++对c的拓展_指针的引用
套用引用公式:Type & ref =val; 假设:type 类型为int * 由公式得 int * & ref = val; // int * *const ref=&va ...
- C++篇:第四章_函数_知识点大全
C++篇为本人学C++时所做笔记(特别是疑难杂点),全是硬货,虽然看着枯燥但会让你收益颇丰,可用作学习C++的一大利器 五.函数 (一)函数使用规则 函数的定义不能嵌套但调用可以嵌套 在函数调用时,如 ...
- ca71a_c++_指向函数的指针_通过指针调用函数txwtech
/*ca71a_c++_指向函数的指针_通过指针调用函数用typedef简化函数指针的定义简化前: bool(*pf)(const string&, const string &); ...
- 从IL角度彻底理解回调_委托_指针
从IL角度彻底理解回调_委托_指针 目录 从IL角度彻底理解回调_委托_指针 1.创作此文的背景 1.1.委托能帮助代码更好地封装 1.2.委托能随时随地更方便地运行其他类中的方法 1.3.委托非常适 ...
- C++篇:第八章_类_知识点大全
C++篇为本人学C++时所做笔记(特别是疑难杂点),全是硬货,虽然看着枯燥但会让你收益颇丰,可用作学习C++的一大利器 八.类 (一)类的概念与规则 "子类"和"子类型& ...
- C/C++:提升_指针的指针和指针的引用
C/C++:提升_指针的指针和指针的引用 写在前面 今天在使用指针的时候我发现了一个自己的错误.
- 小猪猪C++笔记基础篇(四)数组、指针、vector、迭代器
小猪猪C++笔记基础篇(四) 关键词:数组,Vector. 一.数组与指针 数组相信大家学过C语言或者其他的语言都不陌生,简单的就是同一个变量类型的一组数据.例如:int a[10],意思就是从a开始 ...
- C++_系列自学课程_第_11_课_类型转换_《C++ Primer 第四版》
上次说了关于表达式的一些内容,说到还有一些关于数据类型转换的内容,今天我们接着八一八C++中的数据类型转换. 一.隐式类型转换 在表达式中,有些操作符可以对多种类型的操作数进行操作, 例如 + 操作符 ...
随机推荐
- ActionContext、ServletContext、pageContext的区别?
ActionContext是当前的Action的上下文环境,通过ActionContext可以获取到request.session.ServletContext等与Action有关的对象的引用: Se ...
- angular2/angular4 如何通过$http的post方法请求下载二进制的Excel文件
时间有限,废话就不多说了,直接上干货! 下面给大家介绍一下我遇到的一个坑,如果你也遇到了,那恭喜你,你一定能找到答案:angular2/angular4 如何通过$http的post方法请求下载二进制 ...
- mysql数据导入方法
1. 通过mysql-workbench的Data Import/Restore功能 1) 有的命令不支持,比如LOAD DATA LOCAL INFILE 2) 好处是可以和DB的模 ...
- 使用CSS3动画实现绚丽的照片墙效果
临近毕业了,一大波毕业照又要来袭了!如何使用CSS3属性制作出自己的网页版照片墙呢? 闲话少说,先来看看效果图 效果要求: 1,照片要求有一定的白色边框. 2,照片都要有一定的倾斜角度. 3,鼠标移动 ...
- 关于java中使用数组的几点理解笔记
1.数组元素就是变量: 2.在已有数据类型之后加方括号[],就会产生一个新的数组类型: 分两类:1)基本数据类型,如:int[],string[]; 2)引用数据类型,如:Person[](类): 3 ...
- v9手机版文章内容不显示
方法一: 打开PHPCMS v9的/phpcms/templates/default/wap/show.html页面, 将网页中的{$content}替换为:{$rs['content']} 这样wa ...
- html与xhtml有什么区别?
HTML与XHTML之间的差别,主要分为功能上的差别和书写习惯的差别两方面. 关于功能上的差别,主要是XHTML可兼容各大浏览器.手机以及PDA,并且浏览器也能快速正确地编译网页. 由于XHTML的语 ...
- css实现选项卡
<style> *{ margin: ; padding: ; text-decoration: none; list-style: none; outline:none; } .box{ ...
- [命令行] curl查询公网出口IP
转载:http://blog.csdn.net/orangleliu/article/details/51994513 不管是在家里还是办公室,或者是公司的主机,很多时候都是在内网中,也就是说很多都是 ...
- 【Android Developers Training】 88. 使用备份API
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...