Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2011.11.30.C++ for Intel

.pdf
Скачиваний:
8
Добавлен:
27.03.2015
Размер:
588.02 Кб
Скачать

Как было на С

struct FuncTable for Triangle

InitTriangle

DrawTriangle

CloseTriangle

struct FuncTable for Circle

CloseCicrle DrawCircle InitCircle

Как было на С

Object *pObj;

pObj = malloc(sizeof(Object)); PrepareFunctionPointers(pObj, Triangle);

res = pObj->Init(pObjtable->Init(pObj, …); , …);

pObj->Draw(pObjtable->Draw(pObj, …); , …);

pObj->Close(pObjtable->Close(pObj, …); , …); free(pObj);

Как было и как стало

Object *pObj;

Object *pObj;

pObj = malloc(sizeof(Object));pObj=new Triangle; PrepareFunctionPointers(pObj, Triangle);

res = pObj->table->Init(respObj= pObj, …);->Init(…); pObj->table->Draw(pObjpObj, -…>Draw();…);

pObj->table->Close(pObjdelete, …);pObj; free(pObj);

Как стало на С++

Triangle::

 

 

Triangle

 

 

struct FuncTable for Triangle

Triangle::Init

Triangle::Dra

w

Triangle::~

struct FuncTable for Circle

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Circle:: Circle

 

Circle::~

 

Circle::Draw

 

Circle::Init

 

 

 

 

 

 

 

 

 

Как было и как стало

Object *pObj;

pObj = malloc(sizeof(Object)); PrepareFunctionPointers(pObj, Triangle);

res = pObj->table->Init(pObj, …); pObj->table->Draw(pObj, …);

pObj->table->Close(pObj, …); free(pObj);

Object *pObj;

pObj = new Triangle;

res = pObj->Init(…); pObj->Draw(…); delete pObj;

Как стало на С++

pObj = new Triangle;

pObj = malloc(sizeof(Triangle); pObj->table = &FuncTableTriangle; mov ecx, [pObj]

call Triangle::Triangle();

Как стало на С++

Triangle::

 

 

Triangle

 

 

struct FuncTable for Triangle

Triangle::Init

Triangle::Dra

w

Triangle::~

Как было и как стало

Object *pObj;

pObj = malloc(sizeof(Object)); PrepareFunctionPointers(pObj, Triangle);

res = pObj->table->Init(pObj, …); pObj->table->Draw(pObj, …);

pObj->table->Close(pObj, …); free(pObj);

Object *pObj;

pObj = new Triangle;

res = pObj->Init(…); pObj->Draw(…); delete pObj;

Как стало на С++

res = pObj->Init(…); mov ecx, [pObj]

call pObj->table->Init(…)

Как стало на С++

Triangle::

 

 

Triangle

 

 

struct FuncTable for Triangle

Triangle::Init

Triangle::Dra

w

Triangle::~