返回信息流new就做了两件事,分配内存+调用构造函数。
这是一条镜像帖。来源:北邮人论坛 / cpp / #72434同步于 2013/7/6
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
Re: 用malloc模拟C++关键字new的功能
gaoweiwei
2013/7/6镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
可以用malloc + ::constructor(), 和 free()+ ::destructor()来模拟? stl container的元素构造就是用constructor()这个全局函数来处理的。它会在指定的地址调用类构造函数,自然多态的情况就可以交给编译器来处理了。如果要自己手动处理虚函数表指针,可以考虑用C来实现面向对象,自己完成C++编译器的相关工作。
【 在 quan 的大作中提到: 】
: 可以用malloc + ::constructor(), 和 free()+ ::destructor()来模拟? stl container的元素构造就是用constructor()这个全局函数来处理的。它会在指定的地址调用类构造函数,自然多态的情况就可以交给编译器来处理了。如果要自己手动处理虚函数表指针,可以考虑用C来实现面向对象,自己完成C++编译器的相关工作。
请问,能否具体说明一下。
额。具体说明指哪方面? C实现面向过程,还是 construct 和deconstruct?
【 在 bystorm 的大作中提到: 】
: 请问,能否具体说明一下。
【 在 quan 的大作中提到: 】
: 额。具体说明指哪方面? C实现面向过程,还是 construct 和deconstruct?
上面的例子应该如何使用construct和deconstruct呢?
推荐你看一本书吧,STL源码解析,序列式容器一这个章节,学C++不能不看STL吧我觉得。函数重载了几个版本,还要配合迭代器使用,所以几句话说不清楚。另外,deconstruct我是记错了,应该是destroy.简单的说,分配好了内存,再传入“指针”(迭代器)和初始化的值。
【 在 bystorm 的大作中提到: 】
: 上面的例子应该如何使用construct和deconstruct呢?