也就是说,将派生类指针赋值给基类指针时,通过基类指针只能使用派生类的成员变量,但不能使用派生类的成员函数,这看起来有点不伦不类,究竟是为什么呢?第 71、74 行代码也是类似的情况。 pa 本来是基类 A 的指针,现在指向了派生类 D 的对象,这使得隐式指针 this 发生了变化,也指向了 D 类的对象,所以最终在 ...
将派生类的指针赋值给基类的指针的时候,比如 pa = pd;新增加的对象(bcd)在A中没有对应位置被丢弃, pa 指向D 的第一个元素a 的地址 &m_a pa 指向D 的第一个元素a 的地址 &m_a pa 指向D 的第三个元素a 的地址 &m_c 参考1 参考2...
pi 的值是 3.14159,执行int n = pi;后 n 的值变为 3,虽然是赋值,但是 pi 和 n 的值并不相等。 将派生类的指针赋值给基类的指针时也是类似的道理,编译器也可能会在赋值前进行处理。要理解这个问题,首先要清楚 D 类对象的内存模型,如下图所示: 首先要明确的一点是,对象的指针必须要指向对象的起始位置。...
pi 的值是 3.14159,执行int n = pi;后 n 的值变为 3,虽然是赋值,但是 pi 和 n 的值并不相等。 将派生类的指针赋值给基类的指针时也是类似的道理,编译器也可能会在赋值前进行处理。要理解这个问题,首先要清楚 D 类对象的内存模型,如下图所示: 首先要明确的一点是,对象的指针必须要指向对象的起始位置。...
永远不要将派生类数组的指针赋值给基类指针 Reason(原因) Subscripting the resulting base pointer will lead to invalid object access and probably to memory corruption. 作为赋值结果的基类指针的下标运算会引起无效的对象访问并可能发生内存破坏。 Example(示例) ...
百度试题 题目派生类对象的地址可以赋值给基类指针。 A.正确B.错误相关知识点: 试题来源: 解析 A 反馈 收藏
答案是B 首先子类对象的构造必然会先构造基类的对象,所以基类的构造函数和子类的构造函数都会调用,所以count++了两次,所以先输出2 然后show是虚函数,通过基类指针调用会调用子类的方法,所以调用的是D中的show方法,所以输出的是y,也就是120。
是复制对象的意思。如果C++是默认按指针来使用对象的话:obj1 = obj2; (obj1 和 obj2 是某个类的对象的名字。)这就不是赋值了,而是将指针obj2的值赋给obj1; 这与常规不符了。而且按引用和按指针方式使用有一个问题,如果一对象没有任何指针、引用指向他该怎么干?这个对象会浪费存储,所以...
以下说法不正确的是(假设在公有派生情况下)( )。 A. 可以将基类对象赋值给派生类对象 B. 可以将派生类对象的地址赋值给基类指针 C. 可以将派生类对象赋值给基类的引用 D. 可以将派生类对象赋值给基类对象 相关知识点: 试题来源: 解析 A.可以将基类对象赋值给派生类对象 ...
百度试题 结果1 题目关于基类和派生类的关系,___是错误的。 A. 派生类对象属于基类; B. 可以用派生类指针指向派生类对象; C. 可以将基类对象赋值给派生类对象; D. 派生类对象指针可转换为基类指针。 相关知识点: 试题来源: 解析 C 反馈 收藏