C 抽象基類的例項化(抽象工廠模式)

2021-07-22 04:49:31 字數 3587 閱讀 9519

然後按照第二個部落格的意見,應用類模板實現工廠類;中間出現乙個不能例項化抽象基類的問題,通過查資料,然後另外新建乙個工程實驗後知道:

1,抽象類是不能初始化的(最基本的,大家都知道的)

2,如果抽象基類的派生類有哪怕只有乙個函式沒有實現,這個抽象基類仍然不能例項化;即需要將抽象基類中定義的虛介面函式全部在派生類中實現(說的不太專業。。。)

**如下:

#ifndef _core_h_

#define _core_h_

class core

virtual ~core(){}

virtual void numofcore() = 0;

virtual void speedofcore() = 0;

virtual void versionofcore() = 0;

};#endif

#ifndef _multicore_h_

#define _multicore_h_

#include"core.h"

#includeusing namespace std;

class multicore :public core

~multicore(){}

void numofcore()

void speedofcore()

virtual void versionofcore() = 0;

};#endif

#ifndef _singlecore_h_

#define _singlecore_h_

#include"core.h"

#includeusing namespace std;

class singlecore :public core

~singlecore(){}

void numofcore()

void speedofcore()

virtual void versionofcore() = 0;

};#endif

#ifndef _newmulticore_h_

#define _newmulticore_h_

#include"multicore.h"

class newmulticore :public multicore

~newmulticore(){}

void versionofcore()

};#endif

#ifndef _newsinglecore_h_

#define _newsinglecore_h_

#include"singlecore.h"

class newsinglecore :public singlecore

~newsinglecore(){}

void versionofcore()

};#endif

#ifndef _oldmulticore_h_

#define _oldmulticore_h_

#include"multicore.h"

class oldmulticore :public multicore

~oldmulticore(){}

void versionofcore()

};#endif

#ifndef _oldsinglecore_h_

#define _oldsinglecore_h_

#include"singlecore.h"

class oldsinglecore :public singlecore

~oldsinglecore(){}

void versionofcore()

};#endif

#ifndef _factory_h_

#define _factory_h_

#include"core.h"

class factory

virtual ~factory(){}

virtual core* createsinglecore() = 0;

virtual core* createmulticore() = 0;

};#endif

#ifndef _newversionfactory_h_

#define _newversionfactory_h_

#include"factory.h"

templateclass newversionfactory :public factory

;templatenewversionfactory::newversionfactory(){}

templatenewversionfactory::~newversionfactory(){}

templatecore* newversionfactory::createmulticore()

templatecore* newversionfactory::createsinglecore()

#endif

#ifndef _oldversionfactory_h_

#define _oldversionfactory_h_

#include"factory.h"

templateclass oldversionfactory :public factory

;templateoldversionfactory::oldversionfactory(){}

templateoldversionfactory::~oldversionfactory(){}

templatecore* oldversionfactory::createmulticore()

templatecore* oldversionfactory::createsinglecore()

#endif

#include"core.h"

#include"factory.h"

#include"multicore.h"

#include"singlecore.h"

#include"newversionfactory.h"

#include"oldversionfactory.h"

#include"newmulticore.h"

#include"newsinglecore.h"

#include"oldmulticore.h"

#include"oldsinglecore.h"

void main()

抽象工廠模式例項

抽象工廠模式例項 1 例項一 電器工廠 乙個電器工廠可以產生多種型別的電器,如海爾工廠可以生產海爾電視機 海爾空調等,tcl工廠可以生產 tcl電視機 tcl空調等,相同品牌的電器構成乙個產品族,而相同型別的電器構成了乙個產品等級結構,現使用抽象工廠模式模擬該場景 2 例項二 資料庫操作工廠 某系統...

C 抽象基類

為什麼c 要定義抽象基類?c 為什麼要定義抽象基類?抽象類就是類裡定義了純虛成員函式的類。純虛函式只提供了介面,並沒有具體實現。抽象類不能被例項化,通常是作為基類供子類繼承,子類中重寫虛函式,實現具體的介面。為什麼要定義抽象基類呢?依我所見主要有以下原因 1.最重要的原因是,可以將介面與實現分離。介...

C 抽象工廠模式

using system namespace abstractfactory foreach ifactory c in gc 的鍵鼠套裝 c c.createkeyboard sayhi c.createmouse sayhi console.writeline 滑鼠介面 滑鼠必須具備的功能 pu...