4 堆及拷贝构造函数.pptVIP

  • 2
  • 0
  • 约4.11千字
  • 约 18页
  • 2017-06-06 发布于湖北
  • 举报
面向对象程序设计(C++) 第4章 堆与拷贝构造函数 4.1 关于堆 C++程序的内存格局通常分为四个区: 全局数据区 代码区 栈区 堆区 全局变量、静态数据、常量存放在全局数据区;所有类的成员函数和非成员函数代码存放在代码区;为运行函数而分配的局部变量、函数参数、返回数据、返回地址等存放于栈区;余下的空间作为堆区。 4.2 需要new和delete的原因 从C++的立场来看,不使用malloc()函数的原因是它在分配空间的时候不能调用构造函数。类对象的建立包括分配空间、构造结构以及初始化,这些是由构造函数统一完成的。 void fn() { Tdate * pD; pD=(Tdate *) malloc(sizeof(TDate)); //… free(pD); } class TDate { public: TDate(); //构造函数 void SetDate(int y, int m, int d); int IsLeapYear(); void Print(); private: int year, month, day; }; 4.2 需要new和delete的原因 如果构造函数被调用,则须在进行内存分配的malloc()调用时进行,而malloc()仅是一个函数调用,没有足够的信息调用构造函数。pD从malloc()获得只是一个含有随机数据的类对象

文档评论(0)

1亿VIP精品文档

相关文档