使用多个派生类调用基类成员函数
Calling base class member functions with multiple derived classes
好的,所以我有一个多态类层次结构,如下所示:
class Base
{
virtual void show();
};
class DeriveA : Base
{
void show();
};
class DeriveB : Base
{
void show();
};
DeriveA DeriveA_obj;
DeriveB DeriveB_obj;
和指针类型 Base
Base *bPointer
指向派生B将
bPointer->show();
调用 DeriveA_obj.show() 和 DeriveB_obj.show()?
如果我有一个指针类型 派生A
DeriveA *dPointer
指向 DeriveA 将
dPointer->show();
调用除 DeriveA_obj.show(); 以外的任何内容?因为似乎不应该
但我发誓它更早!
谢谢!
调用虚拟方法将调用所指向对象中该方法的最派生版本。 如果bPointer
点在DeriveA_obj
点,bPointer->show()
会调用DeriveA_obj.show()
,如果bPointer
点在DeriveB_obj
点,则会调用DeriveB_obj.show()
。 如果您有一个从 DeriveB
派生的 DeriveC
类,并且bPointer
指向一个DeriveC
对象,那么如果show()
在 DeriveC
中被覆盖,则调用 bPointer->show()
将调用DeriveC_obj.show()
。
我有一个指针类型 Base
Base *bPointer
,它指向对象类型DeriveB
.bPointer->show();
会打电话给DeriveA_obj.show()
和DeriveB_obj.show()
吗?
不,绝对不是。如果bPointer
的动态类型是DeriveB
,则只执行对相应DeriveB::show
函数的调用。反之亦然,如果动态类型为 DeriveA
,它将改为调用 DeriveA::show
。
如果我有一个指向对象类型的指针
DeriveA *dPointer
DeriveA
dPointer->show();
调用除DeriveA_obj.show();
以外的任何内容?
同样,您必须查看动态类型。动态类型是 DeriveA
,这意味着将调用DeriveA::show
。
- 使用基类指针调用基类的值构造函数的语法是什么?
- 在初始化列表之外手动调用基类的构造函数
- 继承:调用基类的成员和方法
- 在成员构造函数之后调用基类构造函数
- C++初始化之前派生类调用基类的方法
- 如何在具有相同函数名称的派生类中调用基类的函数
- 有没有办法在C++中调用基类的所有子类函数?
- C++:在派生类成员上调用基类方法
- 添加字符串类型的类成员会导致调用基类函数而不是子函数
- 有没有办法调用基类函数,该函数在使用私有继承的派生类中被覆盖?
- 如何在C++中调用基类虚函数
- 如何让派生类在调用基类之前执行操作?
- 在调用基类之前需要在成员上调用方法
- 调用基类克隆实现
- 在派生类中调用基类方法,而无需指定基类名称
- 从参数包中派生的调用基类运算符 =
- 当应该调用派生类方法时,为什么要调用基类方法
- 调用基类函数时强制使用类名?
- 无法从派生的一个方法调用基类方法
- 当派生类无法轻易将参数传递到基类时,如何调用基类构造函数