chap5类与对象.pptVIP

  • 9
  • 0
  • 约4.05万字
  • 约 107页
  • 2017-03-15 发布于上海
  • 举报
第5讲 类与对象的更多内容 对象数组* 对象指针* this指针 对象与函数 变量作用域 对象成员 静态成员 友元 类模板 1 对象数组 对象数组 一个数组中的每个数组元素都为同一类的对象。 对象数组的创建 数组长度必须为常量;若在创建数组的同时为每个数组元素进行初始化,则可以省略数组长度。 系统会创建数组中的每个对象元素,并调用相应的构造函数去初始化每个数组元素。 由于创建对象数组即创建多个对象,也要调用构造函数,因此对象数组的声明形式与构造函数有关。 数组的生命期结束时,会为每一个数组元素调用析构函数。 创建对象数组 创建对象数组的形式1 类名 数组名[常量表达式]; 此时会调用无参构造函数。因此该类中: 无自定义构造函数(使用系统提供的默认构造函数),或 自定义了无参构造函数,或 自定义了有参构造函数,但为每个参数提供了默认值。 若不满足以上三个条件之一,则不能使用该形式创建对象数组。 举例说明创建对象数组:Circle类 举例说明创建对象数组:Circle类 创建对象数组 创建对象数组的形式2: 类名 数组名[常量表达式]={类名(参数表),…,类名(参数表)}; 此时会调用有参的构造函数(为构造函数传递实参)。因此该类中: 只有自定义的有参构造函数且没有为每个参数提供默认参数值。 若类中只提供了自定义有参构造函数且没有提供默认参数值,将不能使用第一种形式创建对象数组。 若只有一个参数,则可省略类名。 类名 = 数组名[长度] = {参数1, 参数2,…} 举例说明创建对象数组:Circle类 创建对象数组 若希望在程序中使用多种形式创建对象数组,则应该在类中提供多种形式的构造函数。 重载构造函数 同时提供无参构造函数和有参构造函数 提供带默认参数值的构造函数 若类中既提供了无参构造函数也提供了有参构造函数(即重载)或提供了带默认参数值的构造函数,则可以使用多种形式创建对象数组,此时可只给部分数组元素初始化,未初始化的数组元素将自动调用无参构造函数进行初始化。 举例说明创建对象数组:Rectangle类 // rectangle.h class Rectangle { private: double width,height; public: Rectangle(); double getArea(); double getPerimeter(); void getWH(double,double); void setWH(double,double); }; 举例说明创建对象数组:Rectangle类 // rectangle.h class Rectangle { private: double width,height; public: Rectangle(double, double ); double getArea(); double getPerimeter(); void getWH(double,double); void setWH(double,double); }; 举例说明创建对象数组:Rectangle类 举例说明创建对象数组:Rectangle类 举例说明创建对象数组:Rectangle类 对象数组的使用 访问数组元素对象的各公有成员: 数组元素名[下标].公有成员 例: double t1=c[1].getRadius(); 对象数组例: 2 对象指针 创建对象时,系统会为该对象分配相应的存储空间存放其数据成员,其起始地址就是对象的地址即指针。 对象指针:指向对象的指针。 对象指针变量定义形式: 类名 *对象指针变量名; Circle c, *p=c; 注:定义对象指针时并不调用构造函数,只是为指针变量分配用于存放地址的空间,并没有创建对象。 对象指针访问对象成员的方式:使用- - 例:p-setRadius(4.3); “.”例: (*p1).setRadius(4.3); (小括号不能省略) 在堆中创建动态对象 在堆中动态申请、释放对象内存空间时,要使用对象指针变量、new和 delete运算符。 用new为对象申请空间时需调用构造函数,此时创建了一个对象。如: Circle *p1= new Circle; //调用无参构造函数 或:Circle *p1= new Circle(); Circle *p2=new Circle(2.5); //调用有参的构造函数 Circle *p3= new Circle [3]; 此时必须调用无参构造函数,否则不能动态创建!!调用3次 用delete命令为对象删除动态空间时,将调用析构函数。 delete p1; //调用析构函数 delete []p3; //[]不可省略,

文档评论(0)

1亿VIP精品文档

相关文档