程序设计教程用C语言编程

上传人:大米 文档编号:490028611 上传时间:2022-09-06 格式:DOC 页数:13 大小:72.50KB
返回 下载 相关 举报
程序设计教程用C语言编程_第1页
第1页 / 共13页
程序设计教程用C语言编程_第2页
第2页 / 共13页
程序设计教程用C语言编程_第3页
第3页 / 共13页
程序设计教程用C语言编程_第4页
第4页 / 共13页
程序设计教程用C语言编程_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《程序设计教程用C语言编程》由会员分享,可在线阅读,更多相关《程序设计教程用C语言编程(13页珍藏版)》请在金锄头文库上搜索。

1、程序设计教程-用C+语言编程第四次印刷的勘误表pX. 第1行错:3虚函数对:8.3 消息(成员函数调用)的动态绑定p33. 第1行错:上述操作符的含义是:如果“#=”代表上面的复合操作符,则a #b按照aa b理解。对:上述操作符的含义是:如果“=”代表上面的复合操作符,则a #= b按照a = a (b)理解。p18. 倒数第5行(注意格式对齐)错: cut ib(8)cot , count end;trn 0;对: co ib();out ,count dl;un 0;142. 倒数第4行错:由小到大排个序,则在查找时,可以采用一种较快的查找算法:折半查找(或称二分法)。对:由小到大排个序

2、,则在查找时,可以采用一种较快的查找算法:折半查找(或称二分法查找)。13. 第1行错:固然,在上面的函数mx中,也可以用“*xi”的形式访问数组元素。对:固然,在上面的函数max中,也可以用“xi”的形式访问数组元素。p170.第2个图错:p a head a12. an NUL对:p hd a a2 a LL22. 倒数第行错:voi f() .i (inti) . 对:voi () h(); . void g(int i) x = ; . 51. 第10行错:riv;成员阐明表用于给出在派生类中新定义的成员和对基类某些成员的重定义。对:rivte;用于给出在派生类中新定义的成员,其中涉及

3、对基类某些成员的重定义(参见8.3.2节中的虚函数)。p251. 倒数第16行错:()派生类除了拥有基类的所有成员(基类的构造函数和赋值操作符重载函数除外)外,也可以具有新的成员。例如,对于上面的派生类,它除了拥有基类A的成员:x、和外,它还涉及了新的成员z和h,对一种B类的对象,其内存安排和操作如下:对:(1)派生类除了拥有新定义的成员外,还涉及了基类的所有成员(基类的构造函数和赋值操作符重载函数除外)。例如,对于上面的派生类B,它除了拥有新的成员z和外,还涉及了基类A的成员x、y、f和。对B类的一种对象b,其内存安排和操作如下:p1 倒数第9行错:()派生类的定义用于描述派生类与基类的差别

4、。派生类中可以给出新的成员,也可以对基类的成员进行重定义。如果在派生类中对基类的某个成员进行了重定义,则在派生类中对该成员的访问是针对派生类中重定义的成员。例如:对:(2)如果在派生类中定义了与基类成员同名的成员,则在派生类中对该名字的访问是指派生类中新定义的成员。例如:p25 第9行错:(3)派生类成员名的作用域嵌套在基类作用域中。对于基类的一种成员,如果派生类中没有定义与其同名的成员,则该成员名在派生类的作用域内可见,否则,该成员名在派生类的作用域内不直接可见,如果要使用之,必须用基类名受限。例如:对:()派生类成员名的作用域嵌套在基类作用域中。对于基类的一种成员,如果派生类中没有定义与其

5、同名的成员,则该成员名在派生类的作用域内可见,否则,该成员名在派生类的作用域内不直接可见(被隐藏了,hidn),如果要使用之,必须用基类名受限。例如:p3.倒数第3行错:在派生类中定义新的成员或对基类的成员重定义时,往往需要用到基类的某些rivte成对:在派生类中定义新的成员或对基类的成员重定义时,往往需要用到基类的某些prvate成255. 第1行错:给基类对象的消息也能发给派生类对象,以及基类的对象标记可以标记派生类对象。例如,假对:给基类对象的消息也能发给派生类对象,以及在需要基类对象的地方可以用派生类对象去替代。例如,假p261. 第1行错:8.3虚函数对:8.3 消息(成员函数调用)

6、的动态绑定p26 第711行,互换(2)和()的顺序,并作某些文字修改错:(2)消息的多态。一种可以发送到基类对象的消息,也可以发送到派生类对象,从而也许会得到不同的解释。(3)对象标记的多态。基类的指针或引用可以指向基类对象,也可以指向或引用派生类对象,即一种对象标记符可以属于多种类型,可以标记多种对象。在对象标记符定义时指定的类型称为它的静态类型,而在运营时它实际标记的对象的类型称为它的动态类型。对:()对象标记的多态。基类的指针或引用可以指向或引用基类对象,也可以指向或引用派生类对象,即一种对象标记符可以属于多种类型,它可以标记多种对象。在对象标记符定义时指定的类型称为它的静态类型,而在

7、运营时它实际标记的对象的类型称为它的动态类型。()消息的多态。一种可以发送到基类对象的消息,也可以发送到派生类对象,从而也许会得到不同的解释。p262 倒数第6倒数11行(用新的段替代老的段,请仔细输入新段落的文字)错:一旦在基类中指定某成员函数为虚函数,那么,不管在派生类中与否给出virtual声明,派生类(以及派生类的派生类,依此类推)中对其重定义的成员函数均为虚函数。这里的重定义是指:对派生类中定义的成员函数,其函数名、参数个数和类型以及返回值类型与基类的某个虚成员函数相似。当基类的虚成员函数返回值类型为某个类(假设为C)或其指针或引用时,则派生类中重定义的成员函数的返回值类型也可以是类

8、C的派生类或其指针或引用。派生类对基类虚函数的重定义又称为超越或覆盖(veride)。对:虚函数的动态绑定隐含着:基类中的一种成员函数如果被定义成虚函数,则在派生类中定义的、与之具有相似型构的成员函数是对基类该成员函数的重定义(或称覆盖,vrrid)。这里,相似的型构是指:派生类中定义的成员函数的名字、参数类型和个数与基类相应成员函数相似,其返回值类型或者与基类成员函数返回值类型相似,或者是基类成员函数返回值类型的派生类。一旦在基类中指定某成员函数为虚函数,那么,不管在派生类中与否给出vtal声明,派生类(以及派生类的派生类,依此类推)中对其重定义的成员函数均为虚函数。0.倒数第3行倒数第1行

9、错: A_vtb b _vtbptr: ::f pt: B::x: A:: : :g: y: :当通过引用或指针访问对象的虚成员函数时,将运用虚函数表来动态绑定实际调用的函数,例如:对:a Avtbl _vtbvptr: &:f vptr: ::f: A:: x:&A:g: y: z:当通过对象的引用或指针访问类的虚成员函数时,将运用虚函数表来动态绑定实际调用的函数,例如:71.第1行第8行错:typf void (*Funcr)(vod *); /ncPt是一种指向成员函数的指针类型。tpedefFncPtr *VtblPr; /VlPt是一种指向虚函数表的指针类型。A *p;. p-f()

10、; /编译成:(*(Vlt*))();p-g(); /编译成:(*(*(Vtlt*)+)(p); 当通过引用或指针访问对象的非虚成员函数和不通过引用或指针来访问对象的成员函数时,则不用虚函数表来进行动态绑定,而是采用静态绑定,例如:对:ypede oi(*Funct)(voi); /FuncPtr是一种指向无参数的成员函数的指针类型。A*p;. /在这段代码中,p或者指向a,或者指向bp-f(); /编译成:((FucPt)*(vd *))(p);p-g(); /编译成:(uncPtr)*(*(voi*)p1)(p);当通过对象的引用或指针访问类的非虚成员函数和直接通过对象来访问类的成员函数(

11、涉及虚函数)时,则不用虚函数表来进行动态绑定,而是采用静态绑定,例如:p300. 第行本页结束。(增长某些文字、调节表格的位置。如果本页不够放,可把表格背面的某些文字放入下一页,本页和下一页有某些空行可以删除!),错:上面程序中的x、endl就是操纵符。表10-2列出了常用的输出操纵符。此外,除了通过插入操作符进行输出外,也可以用osream类提供的某些基于字节流的操作来进行输出,例如:/输出一种字符(字节)。orm& ostream:put(char h); /输出p所指向的内存空间中cont个字节。ostram& srea:wite(onst ch*p,int cout); 表 10-2

12、常用输出操纵符操纵符含义endl输出换行符,并执行flh操作flush使输出缓存中的内容立即输出dec十进制输出t八进制输出hex十六进制输出sepecsion(intn)设立浮点数有效数字的个数或小数点后数字的位数setioflag(lng fla)/rsetosflgs(longfags)设立取消输出格式,flags的取值可以是::scientific(以指数形式显示浮点数),ios:fixe(以小数形式显示浮点数),等等。对:上面程序中的hex、ed就是操纵符。表1-列出了常用的输出操纵符。其中,对于浮点数(fot、doubl和long dble),当输出格式为is::scentfic或is::fixd时,操纵符strcsio用于设立浮点数小数点背面的位数;当输出格式既不为ios::scientii也不为ios::fixed时,操纵符setrsion用于设立浮点数有效数字的个数,这时的输出格式将根据有效数字的个数自动选择小数形式或指数形式。表 2常用输出操纵符操纵符含义en输出换行符,并执行lsh操作luh使输出缓存中的内容立即输出ec十进制输出oc八进制输出ex十六进制输

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号