c++各种概念题 ()
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
思考题:
1、什么是继承?继承有哪些优点?
继承是在已有的类的基础上定义新的类,从而形成类的层次和等级,体现了了面向对象程序设计的层次性概括方法。
软件重用、接口重用。
2、C++提供几种派生方式?每种派生方式产生的派生类成员对基类成员的继承性如何?这些派生类的对象对基类成员的继承性又是怎样的?
3种
3、派生类对象能否访问基类的成员函数?怎样访问?
如上图
4、派生类构造函数的构造规则和执行顺序是怎样的?
根据派生类构造函数初始化列表的顺序依次调用基类构造函数对基类数据成员初始化
子对象数据成员类的构造函数(如果有子对象数据成员的话)
派生类构造函数体内的代码
5、派生类析构函数的构造规则和执行顺序是怎样的?
派生类析构函数
子对象数据成员类的析构函数(如果有子对象数据成员的话)
基类的析构函数
6、基类对象与派生类对象之间怎样转换?
公有派生的派生类对象可以赋值给其基类对象,反之不可。此时被赋值的基类对象只能访问基类的公有成员,而不能访问派生类中新增的成员。经过显式类型转换成基类对象的派生类对象可以被基类对象赋值,也可以用该对象来访问派生类的公有成员
7、基类指针与派生类指针之间怎样转换?
派生类对象指针(或引用)可以赋值给基类对象指针(或引用),反之不可。此时被赋值的基类对象指针只能访问基类的公有成员,而不能访问派生类中新增的成员。但可用类型转换运算符将基类指针显式转换为指向派生类的指针来访问派生类的公有成员
8、什么是静态联编和动态联编?
静态联编是指对象的名字和对象的类型,函数标识符(函数所属的类名、函数名、函数返回值和函数参数)和函数编译产生的目标代码在编译时就固定下来,而且不会在程序执行过程中动态地修改。
动态联编就是指根据目标对象的动态类型(而不是静态类型)在程序运行时(而不是在编译阶段)将函数名绑定到具体的函数实现上,成员函数调用的代码地址是根据程序运行时对象的动态类型在最终时刻才被决定的。
9、什么是虚函数?什么是纯虚函数?什么是抽象类?
虚函数是在基类中以关键字virtual说明,并在派生类中重新定义的一个非静态成员函数。
一些物理上无法实现而逻辑上又不得不存在的抽象的虚函数,可以将其在基类中用不包括任何代码的纯虚函数来定义。
包含纯虚函数的类称做抽象类。
10、什么是多态性?虚函数和重载函数在实现多态性方面各有什么特点?
多态性是指不同功能的函数共用一个函数名
在派生类中重新定义虚函数时,函数的原型必须与其在基类中的原型完全一致
11、什么是多重继承?怎样消除多重继承的二义性问题?
多重继承即从两个或两个以上的基类继承而产生的派生类。
为了解决多继承时可能发生的对同一基类继承多次而产生的二义性问题,使某个公共基类的成员在其派生类中只产生一个拷贝,可在从基类派生新的类时将这个基类用virtual关键字说明为虚基类