首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导数用基函数代替自己的函数

导数用基函数代替自己的函数
EN

Stack Overflow用户
提问于 2016-11-11 13:51:09
回答 1查看 73关注 0票数 1

我有一个base类:

base.cpp:

代码语言:javascript
复制
#include "base.h"

base::base() 
{
}

base::~base() {
}

void base::baseMethod(int a) 
{
    std::cout<<"base::baseMethod : "<<a<<std::endl;
}

base.h

代码语言:javascript
复制
#ifndef BASE_H
#define BASE_H

#include <iostream>

class base {
public:
    base();
    base(const base& orig);
    virtual ~base();
    void baseMethod(int);

private:
};

#endif /* BASE_H */

我有derivative类,它是从基派生的

derivative.cpp

代码语言:javascript
复制
#include "derivative.h"

derivative::derivative() : base(){
}

derivative::~derivative() {
}

void derivative::baseMethod(int a)
{
    std::cout<<"derivative::baseMethod : "<<a<<std::endl;
}

void derivative::derivativeMethod(int a)
{
   baseMethod(a);
   derivative::baseMethod(a);
}

derivative.h

代码语言:javascript
复制
#ifndef DERIVATIVE_H
#define DERIVATIVE_H

#include "base.h"

class derivative : public base{
public:
    derivative();
    derivative(const derivative& orig);
    virtual ~derivative();

    void derivativeMethod(int);
    void baseMethod(int);
private:

};

#endif /* DERIVATIVE_H */

main.cpp

代码语言:javascript
复制
derivative t;
t.baseMethod(1);
t.derivativeMethod(2);

产出如下:

代码语言:javascript
复制
derivative::baseMethod : 1
base::baseMethod : 2
base::baseMethod : 2

当我用派生类对象调用baseMethod时,实际上是使用派生类的baseMethod。但是当我调用derivetiveMethod时,我使用的是基类的baseMethod。那是为什么?我怎么能叫导数类的baseMethod呢?谢谢。

我用的是Netbeans 8.2Windows 7 x64g++ 5.3.0 (mingw)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-11 13:55:10

您需要在基类中创建baseMethod virtual

virtual void baseMethod(int);

你不需要在子类中“重新确认”virtual的ness,但是有些人这样做是为了清晰。(这还包括子类中的析构函数)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40549422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档