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