純虛函式庫呼叫 方式

2021-10-19 20:06:49 字數 1595 閱讀 3265

今天看到呼叫的庫定位到的標頭檔案都是純虛函式,覺得挺有意思,也挺實用的,就寫了個小demo記錄下

1、建立新dll工程(demo是用win32控制台應用程式)

2、新建純虛函式標頭檔案(virtualbase.h)

#pragma once

#define dll_exports

#ifdef dll_exports

#define dll_api __declspec(dllexport)

#else

#define dll_api __declspec(dllimport)

#endif

class dll_api cvirtualbase

;extern "c" dll_api cvirtualbase *createobj(); //建立物件

extern "c" dll_api void destroyobj(cvirtualbase* obj); //銷毀物件

3、建立乙個類繼承上面的cvirtualbase並實現響應的函式(class1)

類.h:

#pragma once

#include "virtualbase.h"

class cclass1 : public cvirtualbase

;

.cpp:

#include "stdafx.h"

#include "class1.h"

cclass1::cclass1()

cclass1::~cclass1()

bool cclass1::init()

bool cclass1::uninit()

void cclass1::setnum(int a, int b)

int cclass1::operate()

dll_api cvirtualbase *createobj()

dll_api void destroyobj(cvirtualbase* obj)

工程很簡單,只是簡單做測試,編譯通過後生成vitual_dll.dll,vitual_dll.lib就可以呼叫了。

4、建立呼叫工程usevirtualdll(win32控制台),將virtualbase.h,vitual_dll.lib打包放在工程目錄下,像呼叫其他庫一樣配置即可,下面是呼叫的程式及結果

另:當多個類同時繼承cvirtualbase時,用起來也比較方便,將createobj()改為createobj(int type),及加入型別即可,如下段**

dll_api cvirtualbase *createobj(int type)

return pbase;

}

**都貼出來了,工程就像上面一樣簡單,就不上傳了,自己動手便知。

虛函式 純虛函式

一 定義.純虛函式是在基類中宣告的虛函式,它在基類中沒有定義,但要求任何派生類都要定義自己的實現方法。在基類中實現純虛函式的方法是在函式原型後加 0 virtual void funtion1 0 二 引入原因 1 為了方便使用多型特性,我們常常需要在基類中定義虛函式。2 在很多情況下,基類本身生成...

虛函式 純虛函式

虛函式的作用是允許在派生類中重新定義與基類同名的函式,並且可以通過基類指標引用來訪問基類和派生類中的同名函式。include using namespace std class student student類成員函式的實現 宣告抽象基類shape class shape virtual float...

虛函式和純虛函式

除了繼承外,c 的另乙個優良特性是支援多型,即允許將派生類的物件當作基類的物件使用。如果a是基類,b和c是a的派生類,多態函式test的引數是a的指標。那麼test函式可以引用a b c的物件。示例程式如下 class a void test a a class b public a class c...