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语言中的宏扩展. 采用内联函数可以有效避免函数调用的开销,程序执行效 ...
随机推荐
- JavaScript 实现文件下载并重命名
第一种是HTML官网中的方法<a href="/images/liang.jpg" download="文件名称">HTML5 中 a 标签提供了一 ...
- Backen-Development record 1
单例模式 在应用这个模式时,单例对象的类必须保证只有一个实例存在. 服务进程中的其他对象再通过这个单例对象获取这些配置信息.这种方式简化了在复杂环境下的配置管理. __new__实现 用装饰器实现单例 ...
- shiro环境搭建及基本操作
一.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www ...
- python sqlalchemy 进行 mysql 数据库操作
1. 进行mysql数据库的创建,如果已经存在,就相当于进行数据库的连接操作 from sqlalchemy import create_engine from sqlalchemy.ext.decl ...
- [go]go环境安装-解决安装包不能访问golang.org问题
安装go和vscode vscode插件列表选择go,安装即可,其他插件暂不安装 手动安装一些vscode配套的调试工具等 直接vscode-go,然后点下面的go-tools就能找到 go get ...
- Dev中GridView——背景颜色改变
DevExpress.XtraGrid.Views 设置指定行的背景颜色 1.事件:CustomDrawCell2.示例: private void gridView1_CustomDrawCell( ...
- awk中begin/end的含义
BEGIN中的内容是在awk开始扫描输入之前执行,一般用来初始化或设置全局变量: 而END之后的操作将在扫描完全部的输入之后执行.
- 阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_7 响应json数据之发送ajax的请求
编写conroller的方法 @RequestBody获取请求体的内容.当前请求体传递的是json字符串. 拿到了请求的内容
- MySQL随机字符串函数批量插入数据
简单举个例子: drop table if exists demo1 create table demo1 ( id int primary key auto_increment, name ) ...
- 学习使用Jmeter做压力测试(一)--压力测试基本概念
学习使用Jmeter做压力测试(一)--压力测试基本概念 一.性能测试的概念 性能测试是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试.负载测试和压力测试都属于性能测 ...