【C++笔记】函数(笔记)
在头文件中进行函数声明
建议变量和函数应该在头文件中声明,在源文件中定义。
使用引用避免拷贝
如果函数无须改变引用形参的值,最好将其声明为常量引用。
// 比较两个string对象的长度
bool isShorter(const string &s1,const string &s2)
{return s1.size()<s2.size();
}
尽量使用常量引用
bool is_empty(const string& s) { return s.empty(); }
表示数组大小的形参
void print(const int ia[],size_t size) // 等价于const int* ia
{for(size_t i=0; i!=size; ++i)cout << ia[i] <<endl;
}
数组引用形参
// 正确:形参是数组的引用,维度是类型的一部分
void print(int (&arr)[10])
{for(auto elem:arr)cout << elem << endl;
}f(int &arr[10]); // 将arr声明成了引用的数组
f(int (&arr)[10]); // arr是具有10个整数的整型数组的引用int *matrix[10]; // 10个指针构成的数组
int (*matrix)[10]; // 指向含有10个整数的数组的指针
initializer_list
如果函数的实参数量未知但是全部实参的类型都相同,可以使用initializer_list类型的形参。
和vector一样,initializer_list也是一种模板类型,定义initializer_list对象时,必须说明列表中所含元素的类型。
initializer_list<string> ls;
initializer_list<int> it;
和vector不一样的是,initializer_list对象中的元素永远是常量值,无法改变initializer_list对象中元素的值。
如果想向initializer_list形参中传递一个值的序列,则必须把序列放在一对花括号内。
void error_msg(ErrCode e,initializer_list<string> il)
{cout << e.msg() << ":";for(const auto &elem:il)cout << elem << " ";cout << endl;
}// expected和actual是string对象
if(expected != actual)error_msg(ErrCode(42),{"functionX",expected,actual});
elseerror_msg(ErrCode(0),{"functionX","okay"});
省略符形参
省略符形参是为了便于C++程序访问某些特殊的C代码而设置的,这些代码使用了名为varargs的C标准库功能。省略符形参应该仅仅用于C和C++通用的类型。特别应该注意的是,大多数类类型的对象在传递给省略符形参时都无法正确拷贝。
省略符形参只能出现在形参列表的最后一个位置。
void foo(parm_list,...);
void foo(...);
【C++笔记】函数(笔记)相关推荐
- 20171220-python学习笔记--函数类型
20171220-python学习笔记--函数类型 备注: #位置参数 #传入两个参数 def power(x, n):s = 1while n > 0:n = n - 1s = s * xre ...
- Java Lambda 表达式(又名闭包 (Closure)/ 匿名函数 ) 笔记
Java Lambda 表达式(又名闭包 (Closure)/ 匿名函数 ) 笔记 根据 JSR 335, Java 终于在 Java 8 中引入了 Lambda 表达式.也称之为闭包或者匿名函数. ...
- Python3 函数笔记
Python3 函数笔记 默认值在函数定义作用域被解析,如下所示: >>> i =5 >>> def f(arg=i): ... print(arg) .. ...
- 电商第一季函数笔记(1)
1.isset (PHP 4, PHP 5, PHP 7) isset - 检测变量是否设置 说明 bool isset ( mixed $var [, mixed $... ] ) 检测变量是否设置 ...
- oracle concat函数用法_大白的函数笔记:文本合并就是这么简单,不会的快来学...
我们在工作中,经常会遇到需要把几个单元格的内容连接起来的情况,针对这种情况Excel为我们提供了几种方法:CONCATENATE函数.CONCAT函数"&"连接符和PHON ...
- 9_python笔记-函数
9_python笔记-函数 练习1 写法1:flag标志位 写法2 写法3 写法4 知识点2 git bash 发出冲突 知识点3 列表的拷贝 b = a[:] 示例:列表的拷贝 知识点4 flag ...
- mbedTLS(PolarSSL)简单思路和函数笔记(Client端)
转自: OpenSSL一直以来各种被诟病,具体挑了哪些刺,本文就不深究.作为OpenSSL有很多替代,我了解到的有cyaSSL(WolfSSL)和PolorSSL.其中PolarSSL已经被ARM收购 ...
- SQL及Excel函数笔记2022
@[TOC](SQL及Excel函数笔记2022) Excel函数 使用场景:OA单据没有对应类型编码code 需要在表格中快速匹配出想要的输出可以使用一下IF函数 Excel if 公式使用 =IF ...
- JavaScript学习笔记——函数 Part4:向函数传递函数、从函数返回函数(函数是一等公民)
要点 函数是值,这个值就是函数引用 函数是一等公民:函数引用是一等值 可将函数引用赋给变量.含在数据结构(如对象)中.传递给其他函数或从其他函数返回 函数是一等公民 不要再认为函数是特殊的,有别于Ja ...
- 傲游浏览器怎么创建笔记 傲游浏览器笔记创建方法分享
和某些浏览器不同,傲游浏览器中的笔记功能拥有极清爽.极简约.极免费等三大特性,并因此获得了不少用户的青睐.那么,在傲游浏览器中该怎么创建笔记呢?下面小编就来分享一下傲游浏览器笔记创建的方法,有需要的朋 ...
最新文章
- 商汤被曝已获准在香港上市,计划筹资逾10亿美元
- 在spring中,prototype scoped bean 如何注入单例bean中
- HDU3371(最小生成树)
- RHEL5.6配置本地yum源
- 基于ArcSDE的影像数据管理-疑惑篇 (转载)
- 高级学员:2015年10月24日作业
- LeetCode 1392. 最长快乐前缀(KMP)
- Perfect:Swift 语言服务器端软件框架简介
- JS 将图片编码BASE64
- Xcode :error: linker command failed with exit code 1(use -v to see invocation) 或 libstdc++.6.0缺失问题
- matlab画图实例_自定义函数
- 计算机安全中心无法启动,电脑无法启动windows安全中心服务怎么办?
- 计算机上机考试自我检查800字,学生检讨书800字反省自己【三篇】
- 访问FTP站点下载文件,提示“当前的安全设置不允许从该位置下载文件”
- Acwing-45. 之字形打印二叉树
- JAVA默认永久代大小_jvm——metaspace代替永久代
- 用FPGA实现深度卷积神经网络(5)
- CTF CRYPTO 从零开始的RSA1
- ajax获取涨停股票接口,80后股神研究的两个涨停买入法!(图解)
- 台式计算机BIOS怎么查,怎么查看bios版本|查询电脑主板bios版本的方法