C++ 语句函数再探
1. 表达式只计算,抛弃计算结果;
2. 空语句什么也不做;
3.switch case语句漏写break,将会从匹配到的情况开始执行,直到语句结束
int main()
{
int i = ;
i + ; //表达式
; //空语句
while(cin >> i && i != )
; //空语句
switch(i){
case :
cout << "" << endl;
case : //开始执行
cout << "" << endl;
case :
cout << "" << endl;
default:
cout << "" << endl;//执行结束
}
return ;
}

4. 形参、实参、局部变量、静态局部变量
所谓形参就是占位之用,在函数开始时申请空间,并由传入实参进行实例化(也可称拷贝构造)。一般是局部的,即只能在函数体内可见。
实参用来实例化/初始化形参
局部变量的作用域是函数体或者语句内部,但是加上static修饰就变成了静态局部变量,它作用域还是该函数体,但生命期延长到了程序终止。
int countCalls(int a, int b)
{
static int calls = ;//静态局部变量
return ++calls;
} int main()
{
for(int i=; i<; i++)
cout << countCalls(, ) << endl;
//cout << calls << endl;//无法访问
return ;
}

5. 函数返回值,还是发生了拷贝,即用函数体内的某变量初始化函数调用点的某临时量。
6. 不要返回局部变量的引用或指针,返回后就销毁了,没地儿去找了。
7. 引用返回左值,其他类型返回的是右值。
8. 内联函数适用于优化规模较小、流程直接、频繁调用的函数。
9. 有趣的返回错误信息的宏(静态变量)
void trouble(int m)
{
if(m == )
{
cout << "Error : " << __FILE__;
cout << " in function " << __func__;
cout << " at line " << __LINE__;
cout << " complie on " << __DATE__;
cout << " at " << __TIME__;
}
}

10.函数重载二义性
(1)无参函数VS有参有默认值,歧义
int get(){
return a;
}
int get(int a = ){
return a;
}
//调用get()
(2)传值VS传引用,歧义
int get(int a){
return a;
}
int get(int &a){
return a;
}
//int m = 10;
//调用get(m)
(3)参数存在隐式类型转换,歧义
int get(int m){
return m;
}
long get(long m){
return m;
}
//double m = 10.123
//调用get(m)
参考资料
【1】https://blog.csdn.net/chenxiaohua/article/details/2128899 (有点问题)
【2】https://blog.csdn.net/loving_forever_/article/details/51472127 (有点问题)
C++ 语句函数再探的更多相关文章
- 再探jQuery
再探jQuery 前言:在使用jQuery的时候发现一些知识点记得并不牢固,因此希望通过总结知识点加深对jQuery的应用,也希望和各位博友共同分享. jQuery是一个JavaScript库,它极大 ...
- [老老实实学WCF] 第五篇 再探通信--ClientBase
老老实实学WCF 第五篇 再探通信--ClientBase 在上一篇中,我们抛开了服务引用和元数据交换,在客户端中手动添加了元数据代码,并利用通道工厂ChannelFactory<>类创 ...
- 【再探backbone 02】集合-Collection
前言 昨天我们一起学习了backbone的model,我个人对backbone的熟悉程度提高了,但是也发现一个严重的问题!!! 我平时压根没有用到model这块的东西,事实上我只用到了view,所以昨 ...
- ViewPager+Fragment再探:和TAB滑动条一起三者结合
Fragment前篇: <Android Fragment初探:静态Fragment组成Activity> ViewPager前篇: <Android ViewPager初探:让页面 ...
- 再探java基础——break和continue的用法
再探java基础——break和continue的用法 break break可用于循环和switch...case...语句中. 用于switch...case中: 执行完满足case条件的内容内后 ...
- python再探
python是一门强大的高级编程语言,之前的文章中介绍了python的基础知识,接下来会介绍一些python更为高级的知识. 面向对象编程 基本知识 一般编程思想分为面向过程和面向对象,前者的基本单元 ...
- 深入出不来nodejs源码-内置模块引入再探
我发现每次细看源码都能发现我之前写的一些东西是错误的,去改掉吧,又很不协调,不改吧,看着又脑阔疼…… 所以,这一节再探,是对之前一些说法的纠正,另外再缝缝补补一些新的内容. 错误在哪呢?在之前的初探中 ...
- 再探Redux Middleware
前言 在初步了解Redux中间件演变过程之后,继续研究Redux如何将中间件结合.上次将中间件与redux硬结合在一起确实有些难看,现在就一起看看Redux如何加持中间件. 中间件执行过程 希望借助图 ...
- c++再探string之eager-copy、COW和SSO方案
在牛客网上看到一题字符串拷贝相关的题目,深入挖掘了下才发现原来C++中string的实现还是有好几种优化方法的. 原始题目是这样的: 关于代码输出正确的结果是()(Linux g++ 环境下编译运行) ...
随机推荐
- 安装mycat
1.下载mycat 为了方便,我已经下载下来.我选择的版本是1.6版本 2.解压,安装在/home/xm6f/dev目录下 cd /home/xm6f/devtar -zxvf Mycat-serve ...
- 一百四十一:CMS系统之根据板块过滤显示帖子
视图,根据传过来的板块id查数据 @bp.route('/')def index(): board_id = request.args.get('board_id', type=int, defaul ...
- 123456------com.threeapp.erTongHuiHua01-----儿童绘画游戏01
com.threeapp.erTongHuiHua01-----儿童绘画游戏01
- iOS中处理json解析出现的null,nil的解决办法
最开始是使用的一个函数进行处理,代码如下: - (id) setNoNull:(id)aValue{ if (aValue == nil) { aValue = @"";//为nu ...
- cq三期备注说明
1.关于导航栏添加登陆拦截操作
- 查看某个进程PID对应的文件句柄数量,查看某个进程当前使用的文件句柄数量
================================ 1.linux所有句柄查询 lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more ...
- Node express post 大小设置
body-parser 默认限制了body长度 var bodyParser = require('body-parser'); app.use(bodyParser.json({"limi ...
- 提高.NET应用性能
提高.NET应用性能的方法 写在前面 设计良好的系统,除了架构层面的优良设计外,剩下的大部分就在于如何设计良好的代码,.NET提供了很多的类型,这些类型非常灵活,也非常好用,比如List,Dictio ...
- PGA+SGA的几个参数操作
1.sga_max_size;是静态的必须重启之后生效需要加scope=spfile;(不要超过物理内存值) SQL> alter system set sga_max_size=500M sc ...
- Beanshell post processor写文件
byte[] responseData = prev.getResponseData().; private String filePath = "F:/test.txt"; Bu ...