说我有一个基础班

class Base
{

public:
void A() {do stuff};
void B() {A(); do stuff};
};

和派生类

class Derived : public Base
{
public:
void A() {do things}
};

Derived derived1;
derived1.B();

B会调用基类的A还是派生类的A?

我怀疑B将调用基类的A,并且为了使其使用新的重新定义的A,我必须将其虚拟化:

class Base
{

public:
virtual void A() {do stuff};
void B() {A(); do stuff};
};

那是对的吗? 那是用于虚拟功能吗?

===============>>#1 票数:1

是的,在两个方面都正确...

===============>>#2 票数:0

尝试这个

class Base
{
public:
virtual void A() {do stuff};
void B() { do stuff};
};

class Derived : public Base
{
public:
void A() {do things}
void B() {do things}
};

Derived d;
Base *p = &d;
p->A();
p->B();

功能B将不会被覆盖

  ask by jazzybazz translate from so

未解决问题?本站智能推荐:

1回复

容器类和带有继承的调用虚拟方法

我确定我会丢失一些东西,但是我真的无法在互联网上找到任何东西,为什么我的代码无法按我期望的那样工作: #include <stdio.h> #include <iostream> #include <fstream> #include "string.h"
4回复

C ++继承虚拟函数

我正在尝试学习c ++中的继承。 我写了一些代码来学习虚函数。 当我尝试编译时,出现以下错误: 你能告诉我我做错了吗?
1回复

C ++虚拟方法的虚拟继承

所以编译时这个给出了以下错误: 如果我们将B和C结构的继承非虚拟化,那么代码编译恰到好处而没有任何错误(当然,如果我们调用dd.foo(),则会发生错误)。 那有什么区别? 为什么我们在虚拟地继承我们的类时会出现错误,如果我们直接执行它就没有错误?
2回复

继承虚拟类c ++的派生类

这个问题已经在这里有了答案: 在C ++中,什么是虚拟基类? 10个答案 (1)当类摩托车已经包含在motorVehicle和twoWheels类中时,为什么类摩托车必须继承类车辆? 在书中的解释中写道,摩托车必须继承类车辆,以确保将调用基类(车辆)的构造函数
1回复

虚拟继承类的C ++大小

这是我的代码: 结果: 我认为MyGrands类的大小应为36个字节=(sizeof(MyKids + MyLawKids + int gmem1)-虚拟表指针的4个字节)。 为什么我的结果显示“ MyGrands的大小:32个字节”?
1回复

具有虚拟辅助函数的C ++继承和Pthread

我有一个要尝试实现为抽象类的类,以最大程度地实现代码重用。 但是,两个派生类之间的共性的主要部分在于,每个派生类都有一个消费者和生产者线程。 我想知道是否可以让每个静态成员函数调用一个执行所有基础工作的虚拟成员函数。 基本上,是否允许使用以下代码,或者我是在做些超级hacky,还是编译
1回复

虚拟继承函数的C ++内联

好的,这更多是为了澄清C ++功能的工作方式,而不是答案是否可行。 我将首先解释我所遇到的问题,因为直接的答案就是它不是一个很好的类设计。 我有一个正在改组为if语句的不可维护的类的类; 当我尝试将其转换为合成文件时,与开始使用原始Blob以及一般的小对象分配问题相比,我开始更加困惑于
2回复

C ++虚拟克隆方法,异常继承

我正在类中创建一个虚拟克隆方法,并将在主文件中进行演示。 但是,当我尝试这样做时,会出现错误。 这是我的课: 这是我的使用方式: 我收到这些我不知道如何修复的错误: 链接到错误图片
1回复

虚拟继承中构造函数调用的顺序是什么?

在c ++中虚拟继承中构造函数调用的顺序是什么? 对于以下两种多重继承的情况; (I)对于以下代码,没有虚拟继承; 输出是: (II)具有e类的虚拟继承: 输出是: 有人可以解释在两种情况下如何获得输出? 虚拟继承如何影响对象的构造?
1回复

虚拟继承:没有匹配函数可用于调用

我有以下代码。 该代码的目的是 当我尝试编译上述代码时,出现以下错误: 在阅读了有关虚函数的内容之后,例如,我希望我的调用b->m1(1)解析为B::m2(int a)但显然我的代码是错误的。 我怀疑我没有正确初始化父结构,但是除了我不知道我在做什么错之外,其他都没