资源预览内容
第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
亲,该文档总共5页全部预览完了,如果喜欢就下载吧!
资源描述
C+构造函数和析构函数1.C+规定,每个类必须有默认的构造函数,没有构造函数就不能创建对象。 2.若没有提供任何构造函数,那么 c+提供自动提供一个默认的构造函数,该默认构造函数是一个没有参数的构造函数,它仅仅负责创建对象而不做任何赋值操作。 3.只要类中提供了任意一个构造函数,那么 c+就不在自动提供默认构造函数。 4.类对象的定义和变量的定义类似,使用默认构造函数创建对象的时候,如果创建的是静态或者是全局对象,则对象的位模式全部为 0,否则将会是随即的。#include using namespace std; class Student public: Student()/无参数构造函数 number = 1; score = 100; void show(); protected: int number; int score; ; void Student:show() cout using namespace std; class Teacher public: Teacher(char *input_name)/有参数的构造函数 name=new char10; /name=input_name;/这样赋值是错误的 strcpy(name,input_name); void show(); protected: char *name; ; void Teacher:show() cout using namespace std; class Teacher public: Teacher() director = new char10; strcpy(director,王大力 ); char *show(); protected: char *director; ; char *Teacher:show() return director; class Student public: Student() number = 1; score = 100; void show(); protected: int number; int score; Teacher teacher;/这个类的成员 teacher 是用 Teacher 类进行创建并初始化的 ; void Student:show() coutteacher.show()endlnumberendlscoreendl; void main() Student a; a.show(); Student b5; for(int i=0; isizeof(b)/sizeof(Student); i+) bi.show(); cin.get(); 上面代码中的 Student 类成员中 teacher 成员是的定义是用类 Teacher 进行定义创建的,那么系统碰到创建代码的时候就会自动调用 Teacher 类中的 Teacher()构造函数对对象进行初始化工作! 这个例子说明类的分工很明确,只有碰到自己的对象的创建的时候才自己调用自己的构造函数。一个类可能需要在构造函数内动态分配资源,那么这些动态开辟的资源就需要在对象不复存在之前被销毁掉,那么 c+类的析构函数就提供了这个方便。析构函数的定义:析构函数也是特殊的类成员函数,它没有返回类型,没有参数,不能随意调用,也没有重载,只有在类对象的生命期结束的时候,由系统自动调用。析构函数与构造函数最主要大不同就是在于调用期不同,构造函数可以有参数可以重载!析构函数可以的特性是在程序结束的时候逐一调用,那么正好与构造函数的情况是相反,属于互逆特性,所以定义析构函数因使用符号(逻辑非运算符),表示它为逆构造函数,加上类名称来定义。 c+规定,所有的全局对象和全局变量一样都在主函数 main()之前被构造,函数体内的静态对象则只构造一次,也就是说只在首次进入这个函数的时候进行构造类成员的构造是按照在类中定义的顺序进行的,而不是按照构造函数说明后的冒号顺序进行构造的,这一点需要记住!
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号