C++ primer -函数篇
2014-03-09 22:02
155 查看
C++ primer 重难点列举
1 const 限定符:
定义常量,定义时必须初始化
非const变量默认为extern,要使const变量能够别其他文件访问需要显示指定为extern
Const 对指针与引用型参数有影响
2 枚举
Enumvv{a=1,b,c=2,d} a=1,b=2,c=2,d=3;
3 迭代器:一种检查容器内元素并遍历元素的数据类型
7函数
7..1 函数定义
C++是一种静态强类型语言,对每一次的函数调用,编译都会检查实参。
7.2 参数传递
7.2.1非引用形参
1 非引用形参对应实参的局部副本,一旦函数执行结束,这些局部变量的值也就没了。
2 复制实参的3大局限性(1需要修改值,对象过于大,无法复制)
7.2.2 引用形参
1 引用形参是实参的别名(你懂的)
2 利用const引用防止实参被复制
3 非const引用的形参只能与完全同类型的非const对象关联
例如:int fun(int &val) int a,shot b,const I nt c; 只有fun(a)调用可以
Void fun(string &val) fun(“dddd”);调用失败
总结:尽量将不需要修改的实参定义为const 引用
4 容器形参 数组形参 (看书)
5 int main(int argc,char*argv[]){}
{
//argc 用于传递字符串的个数
//argv 则是C风格的字符串数组
}
7. 6具有返回值的函数
1 返回非引用类型的:intfun(); 会在创建函数处创建临时对像。
2 返回引用类型的: int &fun();
3 不要返回局部对象的引用,因为函数执行完后那个对象就没了,请问那个别名还有何用?? 同理不要返回局部对象的指针。
7 默认实参
1 如果一个形参具有默认实参则其后面的形参都必须有
2 函数调用的实参按位置解析,默认实参只能用来替换调用缺少的尾部实参。
(优先满足前面的)
例如void fun(int a=2,int b=3,char c=’c’)另外注意类型转化
3如果函数定义的形参表中提供默认实参,那么只有在包含该函数定义的源文件中调用该函数时,默认实参才有效。
8 内联函数 inline
1 内联函数在调用点处别展开。(适用小型函数和经常用到的函数)避免函数调用的开销
2 类的成员函数默认为内联函数
9构造函数:初始化列表的顺序为变量声明时的顺序。
10 重载函数
1 main()函数不能重载
2 参数个数不同或类型不同位重载(返回类型不算)
3 函数匹配(重载确定)与实参转化
1 候选函数 -> 函数名相同
2 选择可行函数 -> 1 形参个数相同 2 参数类型相同或者可以转化 (注意有默认实参的)
3寻找最佳匹配 刚好匹配的最好,需要转化的次之
4含有多个形参的重载确定
F(int,int ) f(double,double) 二义性存在 解决办法:强制类型 static_cast<int>()
.
1 const 限定符:
定义常量,定义时必须初始化
非const变量默认为extern,要使const变量能够别其他文件访问需要显示指定为extern
Const 对指针与引用型参数有影响
2 枚举
Enumvv{a=1,b,c=2,d} a=1,b=2,c=2,d=3;
3 迭代器:一种检查容器内元素并遍历元素的数据类型
7函数
7..1 函数定义
C++是一种静态强类型语言,对每一次的函数调用,编译都会检查实参。
7.2 参数传递
7.2.1非引用形参
1 非引用形参对应实参的局部副本,一旦函数执行结束,这些局部变量的值也就没了。
2 复制实参的3大局限性(1需要修改值,对象过于大,无法复制)
7.2.2 引用形参
1 引用形参是实参的别名(你懂的)
2 利用const引用防止实参被复制
3 非const引用的形参只能与完全同类型的非const对象关联
例如:int fun(int &val) int a,shot b,const I nt c; 只有fun(a)调用可以
Void fun(string &val) fun(“dddd”);调用失败
总结:尽量将不需要修改的实参定义为const 引用
4 容器形参 数组形参 (看书)
5 int main(int argc,char*argv[]){}
{
//argc 用于传递字符串的个数
//argv 则是C风格的字符串数组
}
7. 6具有返回值的函数
1 返回非引用类型的:intfun(); 会在创建函数处创建临时对像。
2 返回引用类型的: int &fun();
3 不要返回局部对象的引用,因为函数执行完后那个对象就没了,请问那个别名还有何用?? 同理不要返回局部对象的指针。
7 默认实参
1 如果一个形参具有默认实参则其后面的形参都必须有
2 函数调用的实参按位置解析,默认实参只能用来替换调用缺少的尾部实参。
(优先满足前面的)
例如void fun(int a=2,int b=3,char c=’c’)另外注意类型转化
3如果函数定义的形参表中提供默认实参,那么只有在包含该函数定义的源文件中调用该函数时,默认实参才有效。
8 内联函数 inline
1 内联函数在调用点处别展开。(适用小型函数和经常用到的函数)避免函数调用的开销
2 类的成员函数默认为内联函数
9构造函数:初始化列表的顺序为变量声明时的顺序。
10 重载函数
1 main()函数不能重载
2 参数个数不同或类型不同位重载(返回类型不算)
3 函数匹配(重载确定)与实参转化
1 候选函数 -> 函数名相同
2 选择可行函数 -> 1 形参个数相同 2 参数类型相同或者可以转化 (注意有默认实参的)
3寻找最佳匹配 刚好匹配的最好,需要转化的次之
4含有多个形参的重载确定
F(int,int ) f(double,double) 二义性存在 解决办法:强制类型 static_cast<int>()
.
相关文章推荐
- C语言中求整型数组中的最大值!~~~~(黄为,刘佳琪)
- 机器人行走java代码,稍后附上C语言代码,取余数若为负可以加倍数成正数
- 【C++】PAT(advanced level)1048. Find Coins (25)
- 一、(2)C++ 实现简单的线性表(链式存储结构 - 单链表)
- 【c++系列】类型转换以及预处理器定义的常量(当前的文件名、行号、时间、日期)
- C++ 标准库 Chapter 6 The Standard Template Libary
- 从C++中的const到MMU(存储器管理单元)(MMU部分为网页整理)
- c++ 面试题
- C++学习:模板类学习
- C++编程 二维数组的动态建立方法
- 【C++】PAT(advanced level)1047. Student List for Course (25)
- C/C++/Qt 统计运行时间
- C语言学习记录1
- c++堆排序的实现
- C++ 内存对齐
- C语言_error_MSB8031
- C++ 内存对齐
- 二分法-C++
- 求两个数的最大公约数
- 从一个新手容易混淆的例子简单分析C语言中函数调用过程