- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C++primer 第五版第六章
6.1
实参是形参的初始值
6.2
(a)返回值不能是string
(b) 没有返回值类型
(c)任意两个形参不能相同
(d)没有大括号
6.3
6.4
6.5
6.6
i就是局部变量
6.7
6.8 6.9
6.10
6.11
6.12
比较6.11和6.10
6.11更加易于使用
6.13
传值和传引用
6.14
当拷贝量大或者需要返回额外信息时用传引用参数
如果数据对象是数组,则函数的形参只能是指针,不能是引用
引用运行时跟指针完全等效?所以在编译期语法解析绝不允许以任何方式访问引用类型变量的实际地址?而数组是通过地址访问元素?所以既不允许指向引用类型的指针?也不允许引用类型数组
6.15
无需改变string的内容就常量引用
需要occur改变后的值
拷贝量小,而且在主函数中不希望被引用改变其内容
由于调用函数里没有改百年s的值,所以也没会怎么样
Ouucr是常量引用则无法得到出现的次数。为0不能更改
6.16
应为const常量引用
6.17
不改实参值,用const,若改实参值当然string s。
6.18
(a)bool compare(const matrix m1,const matrix m2);比较两个矩阵是否维数是否相等
(b)vectorint change_val(const int I,vectorint tempsi);向量元素集体加n什么的
6.19
(a)不合法 参数个数不对
(b)合法 形参char 直接给的‘a’经试验也合法
由上图可见
(c)合法
(d)不合法 int直接个的3.8
6.20
需要被改变 则非常量引用 否则就常量引用
若该常量引用设成普通引用
find_char(“helloworld”)类似调用编译错误
另一个函数正确的将参数设成常量引用,在另一个函数内就不能使用find_char.因为它只能接受普通引用
6.21
6.22
用到指针的引用
6.23
显示的用一个形参传递
数组的引用
6.24
改为
用传递指向数组元素首元素和尾元素的指针来解决
或者显示的传递一个表示数组大小的形参来解决
6.25
命令参数用空格隔开,用双引号
6.26
6.27(vs10不支持initializer_list)
void calculate_sum(initializer_listint i1)
{
int sum=0;
for(auto beg=i1.begin();beg!=i1.end();++beg)
{
sum+=*beg;
}
cout*beg;
}
6.28
Const string
6.29
要
元素是const 类型 用普通引用引用cosnt肯能会通过改变引用的值改变常量。不允许。
6.30
6.31
返回局部对象的引用无效
但返回局部对象的常量的引用无效么?这个有待讨论。
有这么一句话让我纠结。根据C++标准,如果const的引用被初始化为对一个临时变量的引用,那么它会使这个临时变量的生命期变得和它自己一样。
目前搞不清楚 待再讨论
6.32
6.33
6.34
结果肯定为0
6.35
val—的话后面一个val也减了。但前面一个没减。
6.36
string (func(int i))[10];
6.37
(1)using arrT=string[10];
art fun(int i)
(2)auto fun(int i)-int()[10];
(3)string s[]={“a”,”aa”,”aaa”,”v”,”v” ,”v”,”v”,”v”,”v”,”v”};
decltype(s) arrt(int i);
6.38
6.39
(a)第二句与第一句重复
(b)
(c)合法
6.40(a)
(b)
正确
(c)
中间的不能省略
6.42
6.43
因为inline函数编译时需要直接插入函数代码,所以不能使extern的,每个编译模块(cpp源文件)中必须包含其定义代码(不是声明)?所以内联函数有可能在程序中定义不止一次,就是指在每个调用inline函数的源文件中都要有inline的定义,所以把inline定义放在头文件中,需要时include就可以了。
6.44
inline bool isshort(const string s1,const string s2)
{
return s1.size()s2.size();
}
6.45
简单则内联
6.46
???且只有一条return语句,返回类型是字面值类型但形参string不是
6.47 首先是没改前用递归输出vec
修改后
6.48
不合理
Cin 为空才退出while 那么cin肯定为假 必须退出啊
6.49
文档评论(0)