C++程序设计入门(上) 函数学习
局部变量和全局变量的访问:
全局变量的作用域时全局,局部变量的作用域是局部,若全局和局部的变量名相同的话,局部变量的改变不会引起全局变量的改变
#include<iostream>
int a=1;
int main()
{
int a=10;
std::cout << a << std::endl;
std::cout << ::a << std::endl;
return 0;
}
局部变量名与全局变量名相同时, 可使用 :: 访问全局变量
重载函数:
已知一个程序
int max(int num1, int num2)
{
if (num1 > num2) return num1;
else return num2;
}
如果遇到浮点数要比大小怎么办?
解决方法是方法是生成 一个同名不同参数的函数;
编译器如何匹配重载函数调用? 看参数:1. 个数 2.类型 3.顺序
#include<iostream>
using namespace std;
int max(int num1,int num2)
{
if(num1>num2)
return num1;
else
return num2;
}
double max(double num1,double num2)
{
if(num1>num2)
return num1;
else
return num2;
}
int main()
{
cout << max(,) << endl;
cout << max(3.4,5.2) << endl;
return ;
}
默认参数值:
C++ allows you to declare functions with default argument values. (可以声明带默认参数值的 函数)
The default values are passed to the parameters when a function is invoked without the arguments. (无参调用函数时,默认值会 被传递给形式参数)
定义时要注意:参数列表中默认值参数应该后置
错误的代码:
void t1 (int x, int y=, int z);
void t2 (int x, int y=, int z);
正确的代码:
void t3 (int x, int y=, int z=);
void t4 (int x=, int y=, int z=);
调用时需要注意:
参数列表中实参应该前置
错误代码:
t3 (, , );
t4 ( , , );
正确代码:
t3 (); // y,z: default value
t4 (, ); // z: default value
内联函数:
Using functions in a program:
Advantages(优点): 易读易维护
Drawbacks (缺点): 运行时性能开销 • 函数调用时:参数及部分CPU寄存器的 寄存器内容进栈,控制流跳转 • 函数返回时:返回值及寄存器值出栈, 控制流跳转
Inline functions 目的:减小性能开销
方法:代码插入到调用处
结果:导致程序变大
用法:在函数前加关键字inline
inline int max (int a, int b)
{
return (a > b ? a : b);
}
错误的代码:
int max (int a, int b); // Call max() inline int max (int a, int b)
{
return (a > b ? a : b);
}
内联函数适用于短函数
C++程序设计入门(上) 函数学习的更多相关文章
- 网易云课堂_C++程序设计入门(上)_第6单元:丹枫虽老犹多态–继承与多态_第6单元作业【2】- 在线编程(难度:中)
第6单元作业[2]- 在线编程(难度:中) 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统 ...
- 网易云课堂_C++程序设计入门(上)_第1单元:C++概览_第1单元作业 - 写代码 - 互评 (难度:易)
第1单元作业 - 写代码 - 互评 (难度:易) 查看帮助 返回 提交作业(截止时间已过) 完成并提交作业 作业批改 互评训练 互评作业 自评作业 成绩公布 查看成绩 温 ...
- 网易云课堂_C++程序设计入门(上)_第5单元:万类霜天竞自由 – 对象和类的更多内容_第5单元作业【4】 - 在线编程(难度:难)
第5单元作业[4] - 在线编程(难度:难) 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系 ...
- 网易云课堂_C++程序设计入门(上)_第4单元:物以类聚 – 对象和类_第4单元作业【3】- 在线编程(难度:难)
1 在本单元作业[1]和作业[2]的基础上,创建一个MyRectangle类,并在main函数中创建类的实例.(10分) 题目难度: 难 题目内容: Screen类: 与作业[2]要求完全相同. 如果 ...
- 网易云课堂_C++程序设计入门(上)_第2单元:丹青画松石– EGE图形库
第2节:一个简单的EGE程序 #ifndef _GRAPHICS_H_ #define _GRAPHICS_H_ #ifndef __cplusplus #error You must use C++ ...
- C++程序设计入门(上) 之对象和类
面向对象编程: 如何定义对象? 同类型对象用一 个通用的类来定义 class C { int p; int f(); }; C ca, cb; 一个类用变量来定义数据域,用函数定义行为. class ...
- 网易云课堂_C++程序设计入门(上)_第3单元:更上一层楼 – 超越C的语法_第3单元作业【3】-在线编程(难度:中;10分)
1 本题要求实现两个重载的swap函数,每个swap函数都可交换3个整数a,b,c的值.将a的值存入b,b的值存入c,c的值存入a, 并且返回三个整数中最大的数的值.例如a,b,c的值为1,2,3,则 ...
- C++程序设计入门(上) string类的基本用法
string类中的函数 1. 构造 2. 追加 3. 赋值 4. 位置与清除 5. 长度与容量 6. 比较 7. 子串 8. 搜索 9. 运算符 追加字符串 string s1("Welc ...
- C++程序设计入门 之常量学习
常量: 常量的定义格式:const datatype CONSTANTNAME = VALUE 常量的命名规范:符号常量(包括枚举值)必须全部大写并用下划线分隔单词 例如:MAX_ITERATIONS ...
随机推荐
- 利用open live writer工具的Metaweblog技术API接口同步到多个博客。
测试例子内容: hello world hello metaweblog hello open live writer
- QT5.9 新特性与版本回顾
原文链接: http://blog.qt.io/blog/2017/05/31/qt-5-9-released 翻译内容如下,采用的是第三方某在线翻译软件,所以有些地方不是太精确,纵然大吉做了一定的调 ...
- Android的事件分发(dispatchTouchEvent),拦截(onInterceptTouchEvent)与处理(onTouchEvent)
在Android中,View的结构是树状的,所以,当触发触摸事件的时候,其事件传递也是从上之下一层层的传递.下面我们结合例子来一点点进行分析. 首先,我们需要了解事件处理中的几个方法: 1.在View ...
- 安卓app开发-02-安卓app快速开发
安卓app开发-02-安卓app快速开发 上一篇介绍了安卓 app 开发的工具和环境配置,本篇不涉及编程技术,适合小团队快速高效开发 APP制作流程 当有一个APP创意,该如何实现呢?是花数十万找AP ...
- App更新之dialog数字进度条
App更新之dialog数字进度条 前言:现在一般的Android软件都是需要不断更新的,当你打开某个app的时候,如果有新的版本,它会提示你有新版本需要更新.当有更新时,会弹出一个提示框,点击下载, ...
- 新建虚拟机,每次都提示无法连接虚拟设备 ide1:0
处理方式:看到了这个老哥http://www.cnblogs.com/dean-du/p/6888513.html的博客,发现问题是一样的,所以记录一下. 将虚拟机设置中的CD/DVD选项中的连接更改 ...
- AdvStringGrid使用小结
结合最近自己做的一些工作,用到了第三方控件AdvStringGrid,这里就常用的一些技巧做个小小的总结 (1)如何设置表格固定的列数,如下图所示: 这里固定的列数为3列,通过设置下面属性来改变固定的 ...
- cetnos7下openresty使用luarocks 进行lua的包管理
先安装一下包管理工具 yum install luarocks lua-devel -y luarocks install lpack ln -s /usr/lib64/lua /usr/local/ ...
- August 24th 2017 Week 34th Thursday
If you have choices, choose the best. If you have no choice, do the best. 如果有选择,那就选择最好的:如果没有选择,那就努力做 ...
- 51nod 1403 有趣的堆栈
题目看这里 主要是能分析出这样一个结论: 每个pop根据这个元素上面被压过多少个元素,可以知道他是在前面哪个pop之前被push的. 根据这些信息可以求得每个pop到上一个pop之间有多少个push, ...