是一种在面向对象编程中常用的技术,用于将基类对象指针转换为派生类对象引用,以便可以访问派生类特有的成员和方法。 在C++中,可以使用dynamic_cast运算符来进行基类指针到派生类引用的强制转换...
楼主想要通过将基类指针转为派生类指针的方法来实现调用新方法.但他看到有论述说"不能够将基类指针转化为派生类指针(实际上如果此时的基类指向派生类对象的话,可以发生这种转换,我的批注)",故在论坛里对这一问题进行了交流.(我存在的疑惑:既然他可以使用子类来调用新方法,干嘛还要使用基类呢?)...
//program 14.8.1.cpp 基类和派生类指针互相转换 #include <iostream> using namespace std; class CBase { protected: int n; public: CBase(int i):n(i) { } //constructor_CBase void Print() { cout << "CBase:n=" << n << endl; }...
题目当将基类指针转换为派生类指针时,由于编译器认为这种操作是危险的,所以必须要使用___。相关知识点: 试题来源: 解析 当将基类指针转换为派生类指针时,由于编译器认为这种操作是危险的,所以必须要使用___. 强制类型转换反馈 收藏
1. 基类指针指向基类对象、派生类指针指向派生类对象 这种情况是常用的,只需要通过对应类的指针直接调用对应类的功能就可以了。 #include<iostream> using namespace std; class Father public: void print() printf("Father's function!"); ; class Son:public Father ...
派生类指针强转基类指针 向上转换简单无门槛,直接通过dynamic_cast转换,见代码示例。 基类指针强转派生类指针 向下转换要求基类得有虚函数,否则编译时会报cannot dynamic_cast ‘qa’ (of type ‘class A’) to type ‘class C’ (source type is not polymorphic) 错误,见代码示例。
这段代码不会通过编译。基类指针不能强制转换并赋给派生类指针,原因很简单,如果能够这样赋值,意味着基类完全可以替代派生类,这是不允许的,因为派生类可能有添加功能。如果现实中需要这种转换,那就首先需要考虑一下继承关系的设计问题了。
C++中也可以啊,用的是donamic_cast不就可以强制转换了么! 上面说的截断是不可能发生的,因为这是指针,是不会发生截断的。其实这就是C++的多态,基类指针指向派生类对象,这样就可以通过基类指针调用派生中重写的方法。 假如基类中有个display的虚函数,而且各个派生类中都重写 了该函数的话,只需...
dynamic_cast 是执行显式安全向下转换。只有当基类具有虚函数,且此时的基类指针具有正确的子类类型时,dynamic_cast才会返回正确的指针,否则返回0。安全性体现在这个地方,只能将基类指针向下转换为正确的子类类型。至于你用static_cast可以实现这个功能,是因为static_cast是执行强制转换,是一种不安全的转换...
1.什么是基类? 在面向对象设计中,被定义为包含所有实体共性的class类型,被称为“基类”。-百度百科 简单理解,即父类(相对派生类) 2.什么是派生类? ...利用继承机制,新的类可以从已有的类中派生。那些用于派生的类称为这些特别派生出的类的“基类”。