当前位置:首页 > 思想汇报 > [C++教学难点浅析] c哩c哩舞蹈教学视频
 

[C++教学难点浅析] c哩c哩舞蹈教学视频

发布时间:2019-01-18 03:48:40 影响了:

   [摘要] 运用new运算符和delete运算符实现动态内存分配,是C++程序分配内存独有的内容。根据对象所在类的不同,创建对象时,调用构造函数的情况各有不同,特别是含有对象成员的派生类对象构造函数的调用顺序比较复杂。很多学生对上述知识点不能正确理解,形成学习障碍。通过参考相关书籍进行大量实验,深入分析研究它们的特点、规律及使用方法,并用于指导教学,收到了好的教学效果。
  [关键词] C++ 教学难点 动态分配内存 构造函数调用
  
  在对自考学生进行“C++程序设计”学习指导时,发现许多学生总是不能正确解答“动态分配内存”和“构造函数调用”这两个重要的知识点相关的问题。本文就这两个问题进行讨论。
  1 动态分配和释放内存的问题
  1.1问题的提出
  动态分配内存几乎是所有应用程序的重要组成部分。C++提供的动态分配内存是由new和delete两个运算符实现的,在自考教材中多处提到,其中在第10页例1.3和第82页例4.8两处出现如下:
  例1.3 例4.8
  double *p; Point *ptr=new Point[2];
  p=new double[3];……
  ……delete [ ]ptr;//释放内存
  pelete p;//释放内存
  上例中,两次动态定义的均是数组,但采用delete释放内存的方式确不同,且上机运行均能通过编译,从而给人以两种方式均正确的认识。
  但是,在2009年10月全国试卷第49题中,对用data =new T[len]定义的动态数组,给出的标准答案只有一个即“delete[]data;”而不是“delete[]data;”或“delete data;”。到底怎样才是正确的呢?请看下面解答。
  1.2单个对象内存空间的动态分配和释放
  1.2.1动态分配
  一般形式:数据类型*指针名=new数据类型(初值);
  语句作用:通过new语句,动态分配一个能够存储指定数据类型数据的内存单元,并把分配到的内存初始化为某一个可知的初值,同时返回指向内存的开始处的指针。
  注意:初始化部分的类型必须与内存分配的数据类型一致。
  1.2.2释放内存
  一般形式:delete指针名;
   语句作用:告诉系统释放由new分配的单个内存单元。
  几点注意:
  (1)用new为指针分配内存,称为手工分配内存,这种方式分配的内存不能自动释放(由系统定义变量时分配的内存,当不再使用时,系统将会自动释放。),必须用delete手工释放。
  (2)delete必须用在先前已由new成功分配内存的有效指针上,若用在了未用new分配内存的指针上,将会带来严重的问题,比如系统崩溃。
  (3)对于一个用new分配内存的指针,只能用一次delete。
  例1 double *p=new double(3.5);
  ……
  pelete p;
  1.3数组的动态分配及释放
  1.3.1动态分配
  一般形式:数据类型 *指针名=new数据类型[m];
  语句作用:通过new语句动态分配一个由指定的数据类型所要求的连续m个内存单元,并返回指向首个单元开始处的指针。
  注意:分配数组时不能给数组初始化,即不能给定初值。
  1.3.2释放内存
  一般形式:数据类型 []指针名;
  语句作用:告诉系统用[]释放动态分配的数组。
  注意:
  (1)用delete释放一个动态数组时,还必须用[]形式告诉delete释放多大的内空间,否则内存长期占用,很快就会耗尽,造成内存泄漏。
  (2)用delete释放由new分配数组时,只需用[],不必在括号中加数字说明数组长度。
  例2动态分配对象数组。
  #include
  using namespace std;
  class Point{private:int x,y;public:
  Point():x(0),y(0){cout
  using namespace std;
  class object{ private:int val; public:
  object( ):val(0){
  cout   container( ):data(0),one( ),two( ){
  cout
   using namespace std;
   classPoint{public:Point(){cout
  using namespace std;
  class Point{private:int x; public:
  Point(){x=0;cout

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3