文档详情

第4讲 构造函数 、析构函数、this指针、静态成员.ppt

发布:2016-12-08约1.65万字共92页下载文档
文本预览下载声明
面向对象程序设计 第四讲 武汉大学 赵小红 主要内容 构造函数 析构函数 this指针 静态成员 知识回顾 类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。对象是具有类类型的变量。 类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间 。 类和对象应用举例 设计一个学生成绩的简单管理程序,输入学生的3门课成绩后,计算平均成绩,并在屏幕上输出。 #include #include using namespace std; const int num_score 3; class CSTU private: char m_name[12]; float m_score[num_score]; float m_ave; public: void setname char name[] ; void setscores float score[] ; float calave ; void show ; ; 构造函数 定义类时不能对成员变量进行初始化。----只能在声明对象之后进行初始化。 例如:CSTU s1; 成员变量一般都定义为私有属性,不能在声明对象后利用赋值运算对成员变量进行初始化。----与struct不同 什么是构造函数 关于构造函数的规定 构造函数的名称与类名相同; 构造函数不能指定任何返回值类型,包括void返回类型。函数体内也不允许返回值,但允许用无值返回语句“return”(它的返回类型隐含为指向类对象本身的指针this) 构造函数可以有参数也可以无参数。 class CSTU private: char m_name[12]; float m_score[num_score]; float m_ave; public: CSTU char name[],float score[] strcpy m_name,name ; for int i 0;i num_score;i++ m_score[i] score[i]; ; class CSTU private: char m_name[12]; float m_score[num_score]; float m_ave; public: CSTU CSTU char name[] strcpy m_name,name ; 关于构造函数的规定 构造函数的名称与类名相同; 构造函数不能指定任何返回值类型,包括void返回类型。函数体内也不允许返回值,但允许用无值返回语句“return”(它的返回类型隐含为指向类对象本身的指针this) 构造函数可以有参数也可以无参数。 构造函数可以放在类的外部定义,但也要象其他成员函数一样在函数名前加上“类名::” 。 class CSTU private: char m_name[12]; float m_score[num_score]; float m_ave; public: CSTU char name[],float score[] ; ; CSTU::CSTU char name[],float score[] strcpy m_name,name ; for int i 0;i num_score;i++ m_score[i] score[i]; 关于构造函数的规定 构造函数的名称与类名相同; 构造函数不能指定任何返回值类型,包括void返回类型。函数体内也不允许返回值,但允许用无值返回语句“return”(它的返回类型隐含为指向类对象本身的指针this) 构造函数可以有参数也可以无参数。 构造函数可以放在类的外部定义,但也要象其他成员函数一样在函数名前加上“类名::” 。 如果一个类对象是另一个类的数据成员,则在那个类的对象创建时除了调用自己的构造函数外,还会自动调用成员(对象)的构造函数。 构造函数举例 class A Public: A cout “构造A”; ; class B Public: A a; B cout “构造B”; ; void main B b; 默认构造函数 默认构造函数(default constructor)就是在没有显式提供初始化式时调用的构造函数。它由不带参数的构造函数,或者为所有的形参提供默认实参的构造函数定义。 在类定义时若没有定义任何构造函数,编译器自动生成一个不带参数的默认构造函数。当用户定义任何一个构造函数后,该默认构造函数自动消失。 在定义对象时,若没有指定参数,将调用默认构造函数。 默认构造函数举例 #include class A private: in
显示全部
相似文档