1、在虚函数实现中直接通过父类调用
BaseFrame::print();
2、通过对象指针调用
print = new PrintObject();
print->print();
print->BaseFrame::print();
3 、测试
#ifndef BASEFRAM_H
#define BASEFRAM_H
#include <QObject>
#include <iostream>
using namespace std;
class BaseFram
{
public:
explicit BaseFram(){ cout << "this is base frame construct" << endl; }
virtual ~BaseFram(){ cout << "this base frame ~ delet\n";}
virtual void print(){ cout << "this is base frame"; }
};
class PrintObject: public BaseFram
{
public:
explicit PrintObject():BaseFram(){ cout << "this is print construct" << endl; }
virtual ~PrintObject() override{ cout << "this is print ~ delet\n";}
virtual void print() override { BaseFram::print();
cout << endl;
cout << "this is print object\n";}
};
class Test
{
public:
Test()
{
print = new PrintObject();
print->print();
print->BaseFram::print();
// PrintObject test_p;
// test_p.print();
}
~Test()
{
cout << "this test ~ delete \n";
if(print) {
delete print;
print = nullptr;
}
}
private:
BaseFram* print;
};
#endif // BASEFRAM_H
4、main
#include <QCoreApplication>
#include "basefram.h"
int main(int argc, char *argv[])
{
Test test;
// QCoreApplication a(argc, argv);
// PrintObject print;
// print.print();
// Test test;
// return a.exec();
}
5、输出
this is base frame construct
this is print construct
this is base frame
this is print object
this is base framethis test ~ delete
this is print ~ delet
this base frame ~ delet