VC關於類的繼承,虛函數,純虛函數,幾個修飾詞
一、基類與派生類
#ifndef BASECLASS_H
#define BASECLASS_H
class Baseclass
{
public:
Baseclass();
virtual ~Baseclass(); //基類的析構函數必須是虛函數。
virtual void fun1();
};
#endif // BASECLASS_H
#include "baseclass.h"
Baseclass::Baseclass()
{
puts("This is Baseclass Constructor.");
}
Baseclass::~Baseclass()
{
puts("This is Baseclass Destructor.");
}
void Baseclass::fun1()
{
puts("BaseClass fun1");
}
繼承類:
#ifndef CLASSA_H
#define CLASSA_H
#include "baseclass.h"
class ClassA : public Baseclass
{
public:
ClassA();
~ClassA();
void fun1();
};
#endif // CLASSA_H
#include "classa.h"
ClassA::ClassA()
{
puts("classa constructor.");
}
ClassA::~ClassA()
{
puts("classa destructor.");
}
void ClassA::fun1()
{
puts("classa fun1");
}
最後顯示:
二、虛函數與純虛函數
對於範例一代碼:
virtual viod fun1();
就是虛函數,虛函數是實現類的多態的基礎,其可以被派生類重寫,實現新的功能;
而對於純虛函數:
virtual viod fun1()=0;
則是在其後增加=0;表示該函數無實體(虛函數需有實體);
同時包含純虛函數的類無法實例化;