
C++ Primer Plus复习题
文章平均质量分 64
我会在这个专栏里带你将C++primer plus第六版的每一章的复习题都详细的过一遍
使大国和共民人华中
路漫漫其修远兮,吾将上下而求索
展开
-
C++ Primer Plus第十八章复习题
答:在转让数据所有权(而不是复制数据)可行时,可使用移动构造函数,但对于标准数组,没有转让其所有权的机制。7、修改下述简短而丑陋的程序,使其使用lambda表达式而不是函数符Adder.请不要修改sum( )。2、在下述剪短的程序中,那些函数调用不对?对于合法的函数调用,指出其引用参数指向的是什么。6、修改下述简短的程序,使其使用lambda表达式而不是f1()。答:它们是默认构造函数、复制构造函数、移动构造函数、析构函数、复制赋值运算符和移动赋值运算。3、 a.下述简短的程序显示什么?原创 2024-05-26 00:15:00 · 531 阅读 · 0 评论 -
C++ Primer Plus第十七章复习题
答: iostream文件定义了用于管理输入和输出的类、常量和操纵符,这些对象管理用于处理I/O的流和缓冲区。该文件还创建了一些标准对象(cin、cout、cerr和 clog以及对应的宽字符对象),用于处理与每个程序相连的标准输入和输出流。答:在默认情况下,标准输出和标准错误都将输出发送给标准输出设备(通常为显示器)。然而,如果要求操作系统将输出重定向到文件,则标准输出将与文件(而不是显示器)相连,但标准错误仍与显示器相连。7、编写一个程序,请求用户输入下面的信息,并按下面的格式显示它们。原创 2024-05-25 00:15:00 · 368 阅读 · 0 评论 -
C++ Primer Plus第十六章复习题
可以使用 list模板类的sort( )成员函数(参见附录G),而不是通用函数来排序,但没有与random_shuffe()等效的成员函数。10、如果程序清单时使用list而不是vector实现的 ,则该程序的哪些部分是非法的?答:STL 方法使得可以将STL 函数用于指向常规数组的常规指针以及指向STL容器类的迭代器,因此提高了通用性。答:使用迭代器使得能够使用接口类似于指针的对象遍历不以数组方式组织的数据,如双向链表中的数据。答:集合将只存储每个值的一个铂贝,因此,5个5分将被存储为1个5分。原创 2024-05-24 00:15:00 · 836 阅读 · 0 评论 -
C++ Primer Plus第十五章复习题
为使类A拥有一个本身为类B的成员函数的友元,B的声明必须位于A的声明之前。同样,如果B拥有一个本身是A的成员函数的友元,则A的这个声明必须位于B的声明之前。6、对于本章定义的Grand,Superb和Magnificent类,假设pg为Grand *指针,并将其中某个类的对象的地址赋给了它,而ps为Superb *指针,则下面两个代码示例的行为有什么不同?能够创建一种更为严格的友情关系,即类B只有部分成员是类A的友元,而类A只有部分成员是类B 的友元吗?答:应按从子孙到祖先的顺序排列catch语句块。原创 2024-05-23 00:15:00 · 906 阅读 · 0 评论 -
C++ Primer Plus第十三章复习题
答:是的,可以将派生类对象赋给基类对象。仅当派生类定义了转换运算符(即包含将基类引用作为唯一参数的构造函数)或使用基类为参数的赋值运算符时,相反方向的赋值才是可能的。最终结果是,将生成一个新的基类对象,其成员对应于派生对象的基类部分。但只有通过显式类型转换,才可以将基类对象的地址赋给派生类指针(向下转换),而使用这样的指针不一定安全。11、假设定义了一个函数,它将基类对象作为参数(即函数按值传递基类对象。6、如果基类和派生类定义了同名的方法,当派生类对象调用该方法时,被调用的将是哪个方法?原创 2024-05-22 00:15:00 · 955 阅读 · 0 评论 -
C++ Primer Plus第十四章复习题
如果两条继承路线有相同的祖先,则类中将包含祖先成员的两个拷贝。将祖先类作为虚基类可以解决这种问题。假设Gloam版本的tell()应显示glip和fab的值,请为这3个Gloam方法提供定义。假设Gloam版本的tell()应显示glip和fb的值,请为这3个Gloam方法提供定义。1、以A栏的类为基类时,B栏的类采用公有派生还是私有派生更合适?请写出将生成的类声明。只实现类声明,不实现非内联类方法。6、指出虚基类与非虚基类之间的区别。所示程序中生成了多少个模板类定义?2、假设有下面的定义;原创 2024-05-20 22:25:23 · 546 阅读 · 0 评论 -
C++ Primer Plus第十二章复习题
首先,当这种类型的对象过期时,对象的成员指针指向的数据仍将保留在内存中,这将占用空间,同时不可访问,因为指针已经丢失。其次,析构函数释放这种内存后,如果程序将这样的对象初始化为另一个对象,则析构函数将试图释放这些内存两次。将复制指针值,但不复制指向的数据,这将使两个指针指向相同的数据。答:它复制了字符串,但没有给它分配存储空间,应使用new char[len +1]来分配适当数量的内存。2、如果定义了一个类,其指针成员时使用new初始化的,请指出可能出现的3个问题以及如何纠正这些问题。原创 2024-05-21 00:15:00 · 732 阅读 · 0 评论 -
C++ Primer Plus第十一章复习题
答:成员函数是类定义的一部分,通过特定的对象来调用。成员函数可以隐式访问调用对象的成员,而无需使用成员运算符。友元函数不是类的组成部分,因此被称为直接函数调用。友元函数不能隐式访问类成员,而必须将成员运算符用于作为参数传递的对象。请比较复习题1和复习题4的答案。答:要访问私有成员,它必须是友元,但要访问公有成员,可以不是友元。这些运算符必须使用成员函数来定义。原创 2024-05-20 00:15:00 · 729 阅读 · 0 评论 -
C++ Primer Plus第十章复习题
答:如果创建给定类的多个对象,则每个对象都有其自己的数据内存空间;但所有的对象都使用同一组成员函数(通常,方法是公有的,而数据是私有的,但这只是策略方面的问题,而不是对类的要求)。对象是一个变量或其他数据对象(如由new生成的),并根据类定义被创建和使用。类是用户定义的类型的定义。答:在创建类对象或显式调用构造函数时,类的构造函数都将被调用。类的数据成员可以是私有的(默认值),这意味着只能通过成员函数来访问这些数据,这是。答: this 指针是类方法可以使用的指针,它指向用于调用方法的对象。原创 2024-05-19 00:15:00 · 718 阅读 · 0 评论 -
C++ Primer Plus第九章复习题
using声明使得名称空间中的单个名称可用,其作用域与using所在的声明区域相同。使用using编译指令时,就像在一个包含using声明和名称空间本身的最小声明区域中声明了这些名称一样。5、在一个文件中调用average(3,6)时,它返回两个int参数的int平均值,在同一个程序的另一个文件中调用时,它返回两个int参数的double平均值。4、重新编写下面的代码,使之使用using声明,而不是using编译指令。3、重新编写下下面的代码,使其不使用using声明和using编译指令。原创 2024-05-18 00:15:00 · 252 阅读 · 0 评论 -
C++ Primer Plus第八章复习题
编写三个版本:一个用于int参数,一个用于double参数,另一个用于string参数。8、给定复习题6和复习题4中的box结构,提供一个模板具体化,它接受两个box参数,并返回体积较大的一个。6、指出下面每个目标是否可以使用默认参数或函数重载完成,或者这两种方法都无法完成,并提供合适的原型。9、在下述代码(假定这些代码是一个完整程序的一部分)中,v1,v2,v3,v4和v5分别是哪种类型?5、为让函数fill()和show()使用引用参数,需要对下述程序做哪些修改?1、哪种函数适合定义为内联函数?原创 2024-05-17 00:15:00 · 336 阅读 · 1 评论 -
C++ Primer Plus第七章复习题
由于C++将“pizza”解释为其第一个元素的地址,因此使用*运算符将得到第一个元素的值,即字符p。由于C++将“taco”解释为第一个元素的地址,因此它将“taco”[2]解释为第二个元素的值,即字符c。4、编写一个接受3个参数的函数:指向数组区间中第一个元素的指针、指向数组区间最后一个元素后面的指针以及一个int值,并将数组中的每个元素都设置为该int值。3、编写一个接受3个参数的函数:int数组名,数组长度和一个int值,并将数组的所有元素都设置为该int值。2、请创建与下面的描述匹配的函数原型。原创 2024-05-16 00:15:00 · 635 阅读 · 0 评论 -
C++ Primer Plus第六章复习题
但++ch的类型为char,将作为字符打印,而ch+1是int类型(因为char和1相加),将作为数字打印。也就是说,如果变量x为正,则表达式的值为x;8、对于下面所示的程序,与使用数字相比,使用字符(如a和c)表示菜单选项和casse标签有何优点呢?答:如果使用整数标签,且用户输入了非整数(如q),则程序将因为整数输入不能处理字符而挂起。如果使用字符标签,而用户输入了整数(如5),则字符输入将5作为字符处理。答:由于程序使用=而不是==,所以执行的是赋值操作,而不是判断操作。3、请认真考虑下面的程序。原创 2024-05-15 00:15:00 · 662 阅读 · 0 评论 -
C++ Primer Plus第五章复习题
6、编写一个打印1、 2、 4 、 8、 16、 32、 64、的for循环,每轮循环都将计数变量的值乘以2.也就是说,左侧表达式将y设置成1,整个表达式的值(没有使用)为024或20(八进制)。1、入口条件循环和出口条件循环之间的区别是什么?2、如果下面的代码片段是有效程序的组成部分,它将打印什么内容?3、如果下面的代码片段是有效程序的组成部分,它将打印什么内容?4、如果下面的代码片段是有效程序的组成部分,它将打印什么内容?5、如果下面的代码片段是有效程序的组成部分,它将打印什么内容?原创 2024-05-14 00:00:00 · 1023 阅读 · 0 评论 -
C++ Primer Plus第四章复习题
13、编写一段代码,要求用户输入一个正整数,然后创建一个动态的int数组,其中包含的元素数目等于用户输入的值。12、假设treacle是一个包含10个元素的float数组,请声明一个指向treacle的第一个元素的指针,并使用该指针来显示数组的第一个元素和最后一个元素。10、用enum定义一个名为Response的类型,它包含Yes,Nohe Maybe等枚举量,其中Yes的值为1,No为0,Maybe为2。11、假设ted是一个double变量,请声明一个指向ted的指针,并使用该指针来显示ted的值。原创 2024-05-13 00:15:00 · 386 阅读 · 0 评论 -
C++ Primer Plus第三章复习题
long long类型可提供19位有效数字,超过了double保证的13位有效数字。这两条语句并不真正的等价,虽然对于某些系统来说,他们是等效的。最重要的是,只有在使用ASCII码的系统上,第一条语句才将得分设置为字母A,而第二条语句还可用于使用其他编码的系统。9、假设x1和x2是两个double变量,要将它们作为整数相加,在将结果赋给一个整型变量。7、将long值赋给float变量会导致舍入误差,将long值赋给double变量呢?常量33L的类型为long,常量33的类型为int。原创 2024-05-12 00:15:00 · 538 阅读 · 0 评论 -
C++ Primer Plus第二章复习题
8、什么语句可以用来打印“We have X varieties of cheese,”,其中X为变量cheeses的当前值?答:将iostream加入到源代码中,在最终的编译之前,使用iostream文件的内存替换该编译指令。调用函数froop()时,应提供一个参数,该参数的类型为double,而该函数将返回一个int值。7、什么语句可以用来将从键盘输入的值读入变量cheeses中?9、下面的函数原型指出了关于函数的那些信息?2、下面的预处理器编译指令是做什么用的?3、下面的语句是做什么用的?原创 2024-05-11 00:15:00 · 334 阅读 · 0 评论 -
C++ Primer Plus第一章复习题
笑了,第一章就没有复习题。C++ 是一种历史悠久且功能强大的编程语言,其过去和未来都充满了许多重要的里程碑和潜在的发展。原创 2024-05-10 00:15:00 · 280 阅读 · 0 评论