new.c

来自「Object-Oriented Programming With ANSI-C这」· C语言 代码 · 共 38 行

C
38
字号
#include <assert.h>#include <stdlib.h>#include "new.h"#include "new.r"void * new (const void * _class, ...){	const struct Class * class = _class;	void * p = calloc(1, class -> size);	assert(p);	* (const struct Class **) p = class;	if (class -> ctor)	{	va_list ap;		va_start(ap, _class);		p = class -> ctor(p, & ap);		va_end(ap);	}	return p;}void delete (void * self){	const struct Class ** cp = self;	if (self && * cp && (* cp) -> dtor)		self = (* cp) -> dtor(self);	free(self);}void draw (const void * self){	const struct Class * const * cp = self;	assert(self && * cp && (* cp) -> draw);	(* cp) -> draw(self);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?