动作不同: 在 C++中,new 一个对象时,程序完成对象的空间的分配的同时,构造函数也被调用,类似, delete 一个对象时,对象的空间被释放的同时析构函数也被调用。 在 C 中,malloc 和 free 则没有构造函 数和析构函数被调用这个动作。当然,在没有特定的构造函数或析构函数时,C++也没有这个动作。 关于 重载: 在 C++中,对于任何非数组的空间分配,我们可以通过定义函数名相同但参数不同的构造函数完成 对构造函数的重载,而对于数组的空间分配,就只能使用默认构造函数了,若你试图去开辟一个没有默认 构造函数的数组, Compiler 会出错。 在 C 中, 自然是没有重载这个事情了。 返回值不同: 在 C 中, malloc 返回一个 void *指针, 需要你强制指针类型转换 在 C++中, 你直接 new 一个就好。 注意, 对于基本类型, 这个差别是二者唯一的差别, 当然不建议在 C++中使用 malloc+强制类型转换创建基本数据类型或者对象。 定义不同: new 是操作符 malloc 是函数 异常处理方式不同: new 抛出异常 malloc 返回 NULL 分配空 间单位不同: ... by chriszeng87 2011-09-22 回复 (0) 相关讨论
转:C++学习重点分析 学习重点分析
一、#include “filename.h”和#include 的区别 #include “filename.h”是指编译器将从当前工作目录上开始查 找此文件 #include 是指编译器将从标准库目录中开始查找此文件 二、头文件的作用 加强安全检测 通过 头文件可能方便地调用库功能,而不必关心其实现方式 三、* , &;修饰符的位置 对于*和&;修饰符,为了避 免误解,最好将修饰符紧靠变量 ... by SpringArt 2007-02-26 回复 (0)
我来学 C++<二>我的第一个 C++类 二 我的第一个 类
#include
//导入头文件 class Point{//定义类 /* 类的定义可以用 class 和 struct 来定义 struct 定义的类的成员函数和成员变量默认为 public class 定义的类的成员函数和成员变量默认为 pritive */ public: int x; int y; Point(){//构造函 ... by zhaojuan8 2009-03-17 回复 (2)
从 main.c 开始走进 Ruby-登上调试 ... -
我想更深入的了解 Ruby 内部的实现,出发点或许过于天真, 我想了解下这门语言的实现,从中或许可
以学习到某些思路, 比如: 如果我们要设计另外一种动态语言该如何去下手, 如何将其他语言的特性融 合进 Ruby 或者我们要设计的语言, 特定领域的特定语言该如何设计(不要一门又广又全的语言,但又不 是 DSL)。 题目是《从 main.c 开始走进 Ruby》,那我们需要以下的准备工作 ... by CharlesCui 2010-08-18 回复 (14)
我也研究下云风的垃圾回收库
在网上闲逛时发现了一个云风写的垃圾回收库和源码学习文档,我也一起研究一下,一方面弥补一下我
对 gc 知识理解的不足, 另一方面督促自己把这个不足 1000 行代码确足够诡异的迷你 gc 库看完, 搞清楚原理。 参考: 源码地址:manualgc.googlecode/svn/trunk/ 另外一位同学写的分析文章: cppblog/darkdestiny/archi ... by bachmozart 2009-03-21 回复 (3) 相关新闻
JavaScript2.0 :抢先尝鲜 抢先尝鲜
JavaScript2.0 :抢先尝鲜 作者 Rob Gravelle 作为一个开发者和作家,我的一部分工作就是跟随 web 世界 最新发展潮流——不管是关于公司合并、在线购物潮流、或者是编程技巧。我承认如今很难跟上业界里发 生的所有事情,但是有个四处流传的小道消息却吸引了许多的目光:JavaScript2.0 提案。作为新的 JavaScript2.0\EMCAScript 4.0 计划于 2009 年终稿,但是日 ... by hite 2009-08-18 回复 (47)
Scala 和设计模式
在当前软件设计中最流行的要算 GoF 这本书中提出的各种设计模式。很多人认为,设计模式对于程序语 言(特别是 c++/Java)本身的不足之处或多或少有一些弥补, 不过如果语言足够强大, 模式也许没有必要。 下 面 Peter Norvig 的一个例子就非常有代表性。在有些语言中,使用设计模式在使代