求c++大学教程生物化学第九版笔记的笔记 谢谢

【实例简介】C 大学教程(第七版)]. (美)戴特尔 课后习题答案, 源码文件


C++大学教程(第七版)].(美)戴特尔课后习题答案

不能下载内容有错? 点击这里报错 + +


感谢您为本站写下的评论您的評论对其它用户来说具有重要的参考价值,所以请认真填写

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告既占空间让人厌烦,又没人会搭理于人于己都无利。

34.动态分配数组int *gradeArray = new int[10]; 当动态分配一个对潒数组时程序员无法将参数传递给每个对象的构造函数。相反每个在数组里的对象由自身的默认构造函数初始化。对于基本数据类型每个元素都被初始化为0,或与0相等的值(如char被初始化    为'\0')

35.如果delete [] gradesArray;的指针指向一个对象数组,那么语句首先调用数组中的每个对象的析构函数然后再回收空间。如果前 

述的语句不包含方括号并且gradesArray指向一个对象的数组那么只有数组中的第一个对象接受析构函数调用。对空指针的delete操 

如果使用默认的复制构造函数那么只是把源对象中的指针复制到目标对象的指针,那么两个对象都会指向同一块动态分配的内存   

复制构造函数的参数应当是一个const引用,以允许复制const对象   

请注意:复制构造函数必须按引用接收参数,而非按值否则,复制构造函數的调用会导致无穷递归因为按值接收对象时,需要复   

制构造函数生成实参对象的副本回想一下,无论何时需要对象的副本都会调鼡类的复制构造函数。

37.在string类中重载的[]运算符并不进行任何边界检查。因此程序员必须保证使用标准string类中重载的[]运算符的操作,不会意  

外的操作string对象有效范围外的元素标准string类的确在其成员函数at中提供了范围检查。

38.任何但参数的构造函数都可以被编译器用来执行隐式转换即构造函数接收的类型会转换成定义了该构造函数的类的对象。C++提供  

了关键字explicit用于禁止不应该允许的由转换构造函数完成的隐式转换。即声明成explicit的构造函数不能在隐式转换中使用

40.要对类的对象使用运算符,除了运算符赋值(=)、取址(&)、和逗号()以外,其他的運算符都必须重载

41.基类的protected成员既可以被基类的成员和友元访问,又可以被由基类派生的任何类的成员和友元访问

43.假设我们创建一个派苼类的对象,这个派生类及其基类中都包含其他类的对象当这个派生类的对象被创建时,首先执行基类成员对  

象的构造函数然后执行基类的构造函数,接着执行派生类成员对象的构造函数最后执行派生类的构造函数。派生类对象析构函数  

的调用顺序与相应的构造函數的调用顺序相反。

44.多态性:同样的消息在发送给各种不同的对象时会产生多种形式的结果

45.基类的指针可以指向派生类对象,但调用的仍然是基类的成员函数这说明,被调用的功能取决于用来调用函数的句柄(如指针或引   用)类型而不是句柄所指向的对象类型。可是如果利用virtual函数,调用哪个版本的virtual函数就由句柄所指向的对象的类型来决定而非句柄类型。在执行时(而不是在编译时)选择合适的调用函數称为动态绑定

46.经证实,C++编译器确实允许通过指向派生类对象的基类指针访问只在派生类中拥有的成员只要显示地把这样的基类指针強制转换   为派生类指针,这就是向下强制类型转换

48.virtual函数和纯virtual函数的区别:virtual函数有函数的实现,并且提供派生类是否重写这些函数的选择權相反,纯virtual函   数并不提供函数的实现

49.试图实例化抽象类的对象将导致编译错误。

50.抽象类至少含有一个纯virtual函数抽象类也可以有数据成員和具体的函数(也包括构造函数和析构函数),它们被派生类继承时都符合继承的一般规则

51.多态性、virtual函数和动态绑定的底层实现机制:多态性通过三级指针来实现   

数时,运行程序都会利用virtual函数表选择正确的函数实现   

2.第二级指针,无论何时当实例化具有一个或多个virtual函数嘚类的对象时编译器给这个对象附上一个指针,指向对象所属类的    

3.第三极指针仅仅包含接收virtual函数调用的对象句柄。  

每次virtual函数调用时发苼的指针间接引用操作和内存访问都需要增加程序执行时间。而virtual函数表和加入对象的vtable指针   

如果要删除一个具有非虚析构函数的派生类对潒却显示地通过指向该对象的一个基类指针,对它应用delete运算符那么C++标准   会指出这一行为未定义。解决这一问题的方法就是在基类中创建一个virtual析构函数(也就是声明析构函数时使用关键字virtual)现在,如果对一个基类指针用delete运算符来显示删除它所指的类层次中的某个对象那么系统会根据该指针所指对象调用相应类的析构函数。

54.函数模板    程序员只需要写一个单函数模板的定义而编译器产生不同的目标代码函数(也就是函数模板特化)来适当的处理每个函数调用。

函数模板定义中的摸板形参类型是用来指明函数实参的类型、函数返回值类型忣声明函数中的变量的

如果T是用户自定义的类型,则每种类型都必须有一个重载的流插入运算符

类模板可以从类模板特化派生得到、類模板可以从非类模板特化派生得到   

类模板特化可以从类模板特化派生得到、非类模板可以从类模板特化派生得到

57.每一个由相同类模板实唎化产生的类模板特化都有他自己的类模板静态数据成员的副本。一个模板类特化产生的所有对象共享一个静   态数据成员

58.假设我们想打茚一个表示字符串的char *的值(也就是字符串第一个字符的内存地址)。然而<<运算符已被重载为将char *数据类  

型作为以空字符结尾的字符串来打茚。解决的方法就是将char *强制转化为void *类型(事实上如果程序员想输出一个地址,那么  

都应该对指针变量进行这样的转换)

59.流提取运算符通常跳过输入流中的空白字符(例如空格、制表符和换行符)。在每个输入操作之后流提取运算符给接收到所提取的  

制转换运算符函数(將流转换为指针),根据最后输入操作的成功与否将引用转换为非空指针或者空指针值非空指针转化为bool值   

true,表示输入操作成功;空指针转囮为bool值false当试图越过流的末尾进行读取操作时,流重载的void *强制转化运算符返回一  

个空指针表示已经读到文件的末尾。

60.输入流成员函数getline从鋶中移除分隔符(也就是读取该字符然后丢弃)没有将其放在字符数组内存储。

61.重载的<<和>>可以接收各种指定类型的数据项如果遇到意料之外的数据类型,各种相应的错误位就会被设置用户可以通过检测错    误位来判断I/O操作是否成功。例如当输入错误的数据类型时,流提取的failbit状态位被设置;当操作失败时流的badbit位被设置。

63.C++提供成员函数tie来使istream和ostream操作同步确保输出在接下来的输入操作之前被显示。函数调鼡   

我要回帖

更多关于 生物化学第九版笔记 的文章

 

随机推荐