我有一個base
類:衍生利用基地的功能,而不是自己的功能
base.cpp:
#include "base.h"
base::base()
{
}
base::~base() {
}
void base::baseMethod(int a)
{
std::cout<<"base::baseMethod : "<<a<<std::endl;
}
base.h
#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
類派生自base
derivative.cpp
#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
#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
derivative t;
t.baseMethod(1);
t.derivativeMethod(2);
和輸出是:
derivative::baseMethod : 1
base::baseMethod : 2
base::baseMethod : 2
當我打電話baseMethod用衍生物的類對象,實際上我使用派生類的基本方法。但是當我調用derivetiveMethod時,我正在使用基類的baseMethod。這是爲什麼 ?以及如何調用派生類的baseMethod? 謝謝。
我使用Netbeans 8.2
,Windows 7 x64
,g++ 5.3.0 (mingw)
您沒有將'baseMethod'標記爲'virtual'。 –
不是問題,但只是讓你知道它被稱爲派生,而不是派生。當你派生一個類時,它就變成了派生類。 – NathanOliver
[我無法複製它](http://ideone.com/XlJbBs)。 –