C++学习 之 函数的重载及内联(笔记)
1.函数的使用:
1.1 将数组传递给函数:
当需要给函数传递数组作为参数时,其实传过来的是实参的地址就相当于使用引用或指针作为形参。
例:
int DisPlayArray(int Number[],int L)
{
for(int i=;i<L;i++)
cout<<"Array["<<i+<<"]: "<<Number[i]<<endl;
return ;
}
1.2 带默认值的函数参数:
定义一个函数,当我们输入参数时就使用输入的参数,没有实参时就使用初始值。
可以按如下定义:
double area(int r,int h=);//有初始值的参数要在无初始值的参数的后面定义
int main()
{
int r=;
area(r);//如果area函数的初始化后的参数定义在前,就导致我们传给形参r的值传给了h,这样函数调用时就缺了参数值,编译报错
return 0;
}
2.函数的重载:
重载函数是指名称返回类型相同,但参数不同的函数。当我们需要同名函数并且参数不同时,重载函数就很有用。
例如计算圆的面积和圆柱体的表面积:
double area(int r)//r为圆的半径参数
{
cout<<3.14*r*r<<endl;
return 0;
}
double area(int r,int h)//r为底面半径参数,h圆柱高度参数
{
cout<<*3.14*r*h+3.14*r*r*<<endl;
return 0;
}
3.内联函数
内联函数是会在调用它的地方直接展开的函数;内联函数的代码应该是简短的。常规函数调用会导致栈操作、微处理器跳转到函数等操作,这个过程是很快的;但是如果函数比较简短这些操作就显得性价比不是很高。
例如我们声明了如下功能的函数(定义Pi的值):
double GetPi()
{
return 3.14159265;
}
像这样比较简单的函数我们就可使用内联的方法,从而减少调用用的时间。
内联函数声明:
inline double GetPi()
{
return 3.14159265;
}
将函数声明为内联会导致代码急剧膨胀,尤其是当函数进行了大量复杂操作时,例如循环等。所以我们要尽可能少的使用内联函数,除非函数特别简单需要降低开销。
C++学习 之 函数的重载及内联(笔记)的更多相关文章
- 堆(stack) 之 c 和 c++模板实现(空类默认成员函数 初谈引用 内联函数)
//stack 的基本操作 #include <iostream> using namespace std; const int maxn = 3; typedef struct Stac ...
- c++中函数的参数传递,内联函数和默认实参的理解
1.参数传递 1)函数调用时,c++中有三种传递方法:值传递.指针传递.引用传递. 给函数传递参数,遵循变量初始化规则.非引用类型的形参一相应的实参的副本初始化.对(非引用)形参的任何修改仅作用域局部 ...
- C++ 语言中的重载、内联、缺省参数、隐式转换等机制展现了很多优点
C++ 语言中的重载.内联.缺省参数.隐式转换等机制展现了很多优点,但是这些 优点的背后都隐藏着一些隐患.正如人们的饮食,少食和暴食都不可取,应当恰到好处. 我们要辨证地看待 C++的新机制,应该恰如 ...
- 转-C++之虚函数不能定义成内联函数的原因
转自:https://blog.csdn.net/flydreamforever/article/details/61429140 在C++中,inline关键字和virtual关键字分别用来定义c+ ...
- 函数新特性、内联函数、const详解
一.函数回顾与后置返回类型 函数定义中,形参如果在函数体内用不到的话,则可以不给形参变量名字,只给其类型. 函数声明时,可以只有形参类型,没有形参名 把函数返回类型放到函数名字之前,这种写法,叫前置返 ...
- 预处理、const、static与sizeof-为什么不把所有的函数都定义成内联函数
1:内联是以代码膨胀(复制)为代价的,仅仅省去了函数调用的开销,从而提高函数的执行效率.如果执行函数体内代码的时间相比于函数调用的开销较大,那么效率的收获会很小.另一方面,每一处内联函数的调用都要复制 ...
- python基础学习之函数基础和部分内置函数
在函数调用的时候,必备参数必须要传入 函数定义: def 函数名: 代码块pass return 返回值 函数名命名规则: 字母.数字和下划线组成,和变量命名规则一致 pass在这里表示什么都没有 ...
- C++命名空间、函数重载、缺省参数、内联函数、引用
一 .C++入门 1.C++关键字 2.命名空间 3.C++输入&输出 4.缺省参数 5.函数重载 6.引用 7.内联函数 8.auto关键字 9.基于范围的for循环 10.指针空值null ...
- C++基础学习6:内联函数
C++语言新增关键字 inline,用于将一个函数声明为内联函数.在程序编译时,编译器会将内联函数调用处用函数体替换,这一点类似于C语言中的宏扩展. 采用内联函数可以有效避免函数调用的开销,程序执行效 ...
随机推荐
- ubuntu1804搜狗输入法乱码问题解决
打开终端,移除搜狗输入法配置文件: cd ~/.config sudo rm -rf SogouPY* sogou* 然后重启电脑即可.
- codeforces643D
阿狸的基环内向树森林 Background 当阿狸醒来的时候,发现自己处在基环内向森林的深处,阿狸渴望离开这个乌烟瘴气的地方.“明天还有与桃子的约会呢”,阿狸一边走一边说,“可是,这个森林的出口在哪儿 ...
- Git本地安装
1 Git简介 Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. Git是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码 ...
- hive连接hbase
使用hive连接hbase 前提说明:一个hive表指向一个hbase表,一对一,不能多对一 建立外部表 CREATE EXTERNAL TABLE test_hbase( key string, m ...
- word 之 插入删除空行
好久没有写程序了.有些手生: 在用C#对word进行直接开发操作过程中,为了文档的美观,我们会插入或删除空行. 1.插入空行的代码很简单. Selection 类型的TypeParagraph()函数 ...
- MapInfo 文件解析
在MapInfo 中所指的表是单纯的数据表或是图形与数据的结合.一个典型的MapInfo表将主要由*.tab.*.dat.*.wks.*.dbf. *.xls.*.map.*.id.*.ind文件格式 ...
- backspace 产生乱码的问题
1.要使用回删键(backspace)时,同时按住ctrl键(一般情况下会有用,如果没用使用下面的方法) 2.设定环境变量 在bash下:$ stty erase ^? 或者把 stty er ...
- 数据解析框架之FastJson
演示实体类 import java.util.List; public class Student { public String name; public int age; public List& ...
- Django之模型的高级用法
from django.db import models class Publisher(models.Model): name = models.CharField(max_length=30) a ...
- LoadRunner脚本编写之一
LoadRunner脚本编写之一 性能测试工程师要懂代码么?答案是必须的.好多测试员认为在loadrunner中编写脚本很难很牛X ,主要是大多测试人员并未做过开发工作,大学的那点程序基础也忘记的差不 ...