当派生类指针指向基类对象时( ) A. 可以直接调用基类的成员函数 B. 可以调用派生类对象的成员函数 C. 必须强制将派生类指针转换成基类指针才能调用基类的成员函数 D. 以上说法都不对 相关知识点: 试题来源: 解析 C.必须强制将派生类指针转换成基类指针才能调用基类的成员函数 ...
向下转换 (派生类指针指向基类对象) 时,使用 dynamic_cast更安全;而向上转换 (基类指针指向派生类对象) 时,dynamic_cast和static_cast两者效果相同。 之所以要求有虚函数,是因为,只有存在虚函数,才有可能会出现让基类指针/引用指向派生类对象的情况,也就才有转换的意义。在运行时,该信息会存储在类的虚函数表中,以...
我们有如下内存结构,派生类指针pB和基类指针pA都指向相同的位置,也就是数据c所在的位置。 如果基类有虚函数,也就是如下面代码所示的情况 #include <stdio.h> class A { public: char c; int i; virtual char getChar() const { return c; } }; class B: public A { public: int j; }; int main(...
从输出结果我们可看出,CDerived对象的起始地址存放的是虚表指针vptr,接下来的是基类的成员变量,接下来再是自身的成员变量。
基类指针可以new派生类对象,因为派生类对象含有基类部分,所以我们可以把派生类对象当成基类对象来用;编译器内部做了隐式的派生类到基类的转换;这种转换的好处是有些需要用到基类引用/指针地方,可以用这个派生类对象的引用/指针来代替; 派生类构造函数 派生类实际使用基类的构造函数来初始化它的基类部分;基类控制基类部...
关于基类和派生类的关系,___是错误的。 A. 派生类对象属于基类; B. 可以用派生类指针指向派生类对象; C. 可以将基类对象赋值给派生类对象; D. 派生类对象指针可转换为基类指针。 相关知识点: 试题来源: 解析 C.可以将基类对象赋值给派生类对象; 反馈 收藏 ...
下列说法中不正确的是 。 A. 指向基类对象的指针可以指向派生类对象 B. 基类指针指向派生类对象时,只能访问到从基类继承来的成员 C. 派生类对象可以初始化
在C++中,基类指针可以指向派生类对象的原因主要包括:多态性体现、内存布局兼容、类型安全和开闭原则。这种特性是C++支持面向对象编程(OOP)的一个关键方面,它允许使用基类类型的指针或引用来操作派生类对象,从而实现代码的通用性和可扩展性。 详细来说,多态性体现是这一特性的核心。多态性允许我们通过基类指针调用那些在...
基类指针不能指向其私有派生类的对象 D. 指向派生类对象的指针不可以指向基类的对象 相关知识点: 试题来源: 解析 B 正确答案:B解析:其前半句是正确的,但后半句是错误的。它可以访问派生类的对象中由基类继承下来的成员,但不可访问派生类新增成员。
C++与C的另一个区别是,C++可以把派生类对象的地址赋给基类指针,但是在C中没有这里涉及的特性。 8、布尔类型 在C++中,布尔类型是bool,而且ture和false都是关键字。在C中,布尔类型是_Bool,但是要包含stdbool.h头文件才可以使用bool、true和false。 9、可选拼写 ...