《C++ Primer》第五版课后习题解答_第六章(4)(27-35)
2017-09-20 09:48
260 查看
系统环境: windows 10 1703
编译环境:Visual studio 2017
6.27
sum_all.h
6.28
elem 的类型为 const string&
6.29
取决于 initializer_list 中所含元素的类型。如果元素类型为 int 等可以被快速拷贝的类型,则可以不声明成引用类型。否则,就需要声明成引用类型以防在拷贝时拉低代码运行效率。
6.30
编译器报错如下:
6.31
(1) 当返回的引用是局部对象的引用时,该引用是无效的。以为当函数终止时,局部变量的引用将指向不再有效的内存区域
(2) 当函数内部对常量引用进行拷贝或赋值等操作时,返回常量的引用将无效。
6.32
函数合法,但是 main 函数应该添加 return 0 语句。
函数功能是给数组 ia 赋值 0~9。
6.33
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::vector;
int Adam_print(vector<int>::const_iterator b, vector<int>::const_iterator e)
{
if (b != e)
{
cout << *b;
return Adam_print(++b, e);
}
}
int main()
{
vector<int> ivector = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
Adam_print(ivector.begin(), ivector.end());
return 0;
}
6.34
当输入的数是正整数时,函数结果将不会改变。计算过程会在原先的基础上多乘一次 1;
当输入的数为负数时,函数将会被一直调用,陷入死循环。
6.35
如果传入 val--,实际上再次调用的数值仍为 val,故函数陷入死循环。
编译环境:Visual studio 2017
6.27
sum_all.h
#pragma once #include <iostream> using std::cout; using std::endl; using std::initializer_list; int sum_all(initializer_list<int> li);sum_all.cpp
#include "sum_all.h" int sum_all(initializer_list<int> li) { int sum = 0; for (auto ival : li) { sum += ival; } return sum; }sum_allMain.cpp
#include "sum_all.h" using std::cout; using std::endl; int main() { int ans = 0; ans = sum_all({ 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }); cout << ans << endl; return 0; }
6.28
elem 的类型为 const string&
6.29
取决于 initializer_list 中所含元素的类型。如果元素类型为 int 等可以被快速拷贝的类型,则可以不声明成引用类型。否则,就需要声明成引用类型以防在拷贝时拉低代码运行效率。
6.30
编译器报错如下:
error C2561: 'str_subrange': function must return a value
6.31
(1) 当返回的引用是局部对象的引用时,该引用是无效的。以为当函数终止时,局部变量的引用将指向不再有效的内存区域
(2) 当函数内部对常量引用进行拷贝或赋值等操作时,返回常量的引用将无效。
6.32
函数合法,但是 main 函数应该添加 return 0 语句。
函数功能是给数组 ia 赋值 0~9。
6.33
#include <iostream>
#include <vector>
using std::cout;
using std::endl;
using std::vector;
int Adam_print(vector<int>::const_iterator b, vector<int>::const_iterator e)
{
if (b != e)
{
cout << *b;
return Adam_print(++b, e);
}
}
int main()
{
vector<int> ivector = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
Adam_print(ivector.begin(), ivector.end());
return 0;
}
6.34
当输入的数是正整数时,函数结果将不会改变。计算过程会在原先的基础上多乘一次 1;
当输入的数为负数时,函数将会被一直调用,陷入死循环。
6.35
如果传入 val--,实际上再次调用的数值仍为 val,故函数陷入死循环。
相关文章推荐
- 《C++ Primer》第五版课后习题解答_第六章(2)(08-15)
- 《C++ Primer》第五版课后习题解答_第六章(1)(01-07)
- 《C++ Primer》第五版课后习题解答_第六章(3)(16-26)
- 《C++ Primer》第五版课后习题解答_第四章(1)(01-20)
- 《C++ Primer》第五版课后习题解答_第三章(4)(30-36)
- 《C++ Primer》第五版课后习题解答_第五章(3)(15-19)
- 《C++ Primer》第五版课后习题解答_第三章(5)(37-45)
- 《C++ Primer》第五版课后习题解答_第五章(2)(09-14)
- 《C++ Primer》第五版课后习题解答_第二章(1)(01-08)
- 《C++ Primer》第五版课后习题解答_第二章(2)(09-20)
- 《C++ Primer》第五版课后习题解答_第四章(3)(34-38)
- 《C++ Primer》第五版课后习题解答_第五章(4)(20-25)
- 《C++ Primer》第五版课后习题解答_第二章(3)(21-29)
- 《C++ Primer》第五版课后习题解答_第二章(4)(30-38)
- 《C++ Primer》第五版课后习题解答_第四章(2)(21-33)
- 《C++ Primer》第五版课后习题解答_第五章(1)(01-08)
- 《C++ Primer》第五版课后习题解答_第二章(5)(39-42)
- 《C++ Primer》第五版课后习题解答_第三章(2)(06-20)
- 《C++ Primer》第五版课后习题解答_第三章(3)(21-29)
- 《C++ Primer》第五版课后习题解答_第一章(1)(01-11)