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++ 语句函数再探的更多相关文章

  1. 再探jQuery

    再探jQuery 前言:在使用jQuery的时候发现一些知识点记得并不牢固,因此希望通过总结知识点加深对jQuery的应用,也希望和各位博友共同分享. jQuery是一个JavaScript库,它极大 ...

  2. [老老实实学WCF] 第五篇 再探通信--ClientBase

    老老实实学WCF 第五篇 再探通信--ClientBase 在上一篇中,我们抛开了服务引用和元数据交换,在客户端中手动添加了元数据代码,并利用通道工厂ChannelFactory<>类创 ...

  3. 【再探backbone 02】集合-Collection

    前言 昨天我们一起学习了backbone的model,我个人对backbone的熟悉程度提高了,但是也发现一个严重的问题!!! 我平时压根没有用到model这块的东西,事实上我只用到了view,所以昨 ...

  4. ViewPager+Fragment再探:和TAB滑动条一起三者结合

    Fragment前篇: <Android Fragment初探:静态Fragment组成Activity> ViewPager前篇: <Android ViewPager初探:让页面 ...

  5. 再探java基础——break和continue的用法

    再探java基础——break和continue的用法 break break可用于循环和switch...case...语句中. 用于switch...case中: 执行完满足case条件的内容内后 ...

  6. python再探

    python是一门强大的高级编程语言,之前的文章中介绍了python的基础知识,接下来会介绍一些python更为高级的知识. 面向对象编程 基本知识 一般编程思想分为面向过程和面向对象,前者的基本单元 ...

  7. 深入出不来nodejs源码-内置模块引入再探

    我发现每次细看源码都能发现我之前写的一些东西是错误的,去改掉吧,又很不协调,不改吧,看着又脑阔疼…… 所以,这一节再探,是对之前一些说法的纠正,另外再缝缝补补一些新的内容. 错误在哪呢?在之前的初探中 ...

  8. 再探Redux Middleware

    前言 在初步了解Redux中间件演变过程之后,继续研究Redux如何将中间件结合.上次将中间件与redux硬结合在一起确实有些难看,现在就一起看看Redux如何加持中间件. 中间件执行过程 希望借助图 ...

  9. c++再探string之eager-copy、COW和SSO方案

    在牛客网上看到一题字符串拷贝相关的题目,深入挖掘了下才发现原来C++中string的实现还是有好几种优化方法的. 原始题目是这样的: 关于代码输出正确的结果是()(Linux g++ 环境下编译运行) ...

随机推荐

  1. 阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_14-网关-介绍网关及搭建网关工程

    4 Zuul网关 4.1 需求分析 网关的作用相当于一个过虑器.拦截器,它可以拦截多个系统的请求. 本章节要使用网关校验用户的身份是否合法. 4.2 Zuul介绍 什么是Zuul? Spring Cl ...

  2. 小程序下载canvas生成图片

    save_share_img:function(img){ var that = this; let { result } = that.data; getData.getData( "sa ...

  3. pycharm重命名文件

    先右键要重命名的文件,然后按照下图操作:

  4. 云计算和 AWS 概述(一)

    目录 云计算基础 概念 优势 云计算分类 AWS简介 服务概述 AWS 核心服务 AWS 平台服务 AWS开发和操作服务 AWS 数据中心和可用区(AZ) 区域 可用区 区域名 AWS 云适应框架 ( ...

  5. hupu面试

    1.mybatis更新一条数据时,如果某字段为空,则不更新它,使用默认值? <update id="updateProduct" parameterType="Pr ...

  6. easyui loadFilter 使用

    $('#selectChannelForSignup_getBill').combobox({ url:'../channel/listAdvanceChannelPage', queryParams ...

  7. Eclipse启动时报错Java was started but returned exit code=13

    Eclipse启动时报错Java was started but returned exit code=13 如图所示 原因是通过第三方更新JRE时,第三方安装的是32位的JRE,与64位的eclip ...

  8. mysql 数据库批量刷新表字段数据

    UPDATE a,bSET b.studentno = a.studentnumber WHERE b.studentno IS NULL AND a.p_id = b.p_id

  9. JavaScript form提交汉字乱码

    <script type="text/javascript"> var test1="http://www.w3school.com.cn/My first/ ...

  10. K8S 从入门到放弃系列文章目录(Kubernetes 1.14)

    1)软件环境 软件 版本 系统 Centos7.5 Kubernetes 1.14.1 Docker 18.09 Calico 3.6 Etcd 3.3.12 2)部署过程简单概要 三台master节 ...