第七章:函数
来源:互联网 发布:宁静知乎 编辑:程序博客网 时间:2024/05/01 12:11
1.如果使用引用形参的唯一目的是避免赋值实参,则将形参定义为const引用.
2.应该将不需要修改的引用形参定义为const引用.普通的非const引用形参在使用时不太灵活,这样的形参既不能用const对象初始化,也不能用字面值或产生右值的表达式参数实例化.
3.通常函数不应该有vector或者其他的标准库容器类型的形参.C++倾向通过传递指向容器中需要处理的元素的迭代器来传递容器.
4.当编译器检查数组形参关联的实参时,它只会检查实参是不是指针、指针的类型和数组元素的类型是否匹配,而不会检查数组的长度.
5.如果形参是数组的引用,编译器不会将数组实参转化为指针,而是传递数组的引用本身.这种情况下,数组大小成为形参和实参类型的一部分.编译器检查数组实参的大小与形参的大小是否匹配.
6.确保函数的操作不超出数组实参边界的技巧:
1).在数组本身存放一个标志来检测数组的结束.(C语言的字符串就是利用这种方式)
2).传递指向数组的第一个和最后一个元素的下一位的指针.(类似于迭代器)
3).显示传递表示数组大小的实参
7.函数的返回值用于初始化在调用函数处创建的临时对象(在求解表达式时,如果需要一个地方存储其运算结果,编译器会创建一个没有命名的对象).函数返回值类型的处理方法:
1).如果是非引用,在调用函数的地方会将函数的返回值复制给临时对象,当函数返回非引用类型时,其返回值既可以是局部变量又可以是求解表达式的结果
2).返回值为引用时,没有复制返回值,返回的是对象的本身
注意:千万不要返回局部变量的引用
8.代码:
char &get_value(string &str,string::size_type ix)
{
return str[ix];
}
void main()
{
string s("a value");
cout<<s<<endl;
get_value(s,0) = 'A';
cout<<s<<endl;
}
9.自动变量相当于局部变量.内联函数应该在头文件中定义,这一点与其他函数一致.这样可以确保在调用函数是所使用的定义是相同的,并且保证在调用点该函数的定义对编译器可见.
10.在类的成员函数中声明const,在成员函数中,不能修改对象本身的成员变量.另外,const对象、指针const对象的指针或引用只能被const成员函数调用
11.如果没有为一个类显式定义任何构造函数,编译器将会为这个类自动生成默认的构造函数.另外,在全局定义的成员变量或静态定义的成员变量,默认为0.(即与非类的变量一致)
12.有const引用的形参的函数与有非const引用形参的函数是不同的.
13.重载函数的匹配情况:
1).编译器找不到与实参最佳匹配的函数,并生成调用该函数的代码.
2).找不到形参与函数调用的实参匹配的函数;在这种情况下,编译器将给出编译错误信息
3).找到多个与实参匹配的函数,在这种情况下,编译器也将产生编译错误.(即所谓的二义性).
14.重载确定的三个步骤:
1).候选函数:确定该调用所考虑的重载函数集;
2)选择可行函数:从候选函数中选择一个或多个函数,他们能够用该调用中指定的实参来调用.
可行函数的满足条件:
① 函数的形参个数与该调用的实参的个数相同
② ②每个实参的类型必须与对应形参的类型匹配,或者可被隐式转换为对应的形参类型
3)寻找最佳匹配
4).含有多个形参的重载确定
15.指向函数的指针,向其他指针一样,函数指针也指向某个特定的类型,函数类型由其返回的类型即形参确定,与函数名无关.
使用typedef来简化其定义,即:
typedef bool (*pFun)(参数列表)//这种形式在dll中常常使用.
该定义表示pFun指针,它指向返回bool类型并带有参数 的指针
允许将形参定义为函数类型,但函数的返回类型则必须是指向函数的指针,而不能是函数.
- 第七章 函数
- 第七章:函数
- 第七章 函数
- 第七章 函数
- 第七章:函数
- 第七章 函数
- 第七章 函数
- 第七章--函数
- 第七章 函数
- 第七章 函数
- 第七章 函数
- 第七章 函数编程
- 第七章 函数表达式
- 第七章 函数表达式
- 第七章——函数
- C++程序设计语言--第七章:函数
- 《C程序设计》第七章:函数
- Python读书笔记第七章:函数
- Oracle正则表达式的用法
- zoj 1195 Blowing Fuses
- Eclipse 常用快捷键
- 与Android源代码编辑相关的一切操作介绍
- linux shell编程if判断参数说明
- 第七章:函数
- MySQL5資料庫匯出匯入指令
- andoid如何修改系统时间
- linux中shell变量$#,$@,$0,$1,$2的含义解释
- 0x000000ED+RAW多亏了chkdsk C: /f
- android之查看图片的程序 ImageSwitcher Gallery的配合应用---版本1
- 如何复制加密光盘
- wo
- zoj 3129 || poj 3067 Japan