您的位置:首页 > 编程语言 > C语言/C++

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>()

.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: