3.1类与对象的定义 2.静态对象(局部静态和全局静态) 其作用域是定义它的函数体或程序文件,其生存期是 整个程序。构造静态对象的次序是按它们在程序中出现的 次序先后,并在整个程序运行开始时(即在主函数运行前) 只构造一次。 3.全局对象 全局对象的作用域是整个程序,生存期是整个程序的 行时间。它也是在程序运行前(即在主函数运行前)只 构造一次 4.类中成员的构造次序是以类中声明成员的次序进行。 构造函数和析构函数是类的两种特殊的成员函数。 U回
返回 26 3.1 类与对象的定义 2.静态对象(局部静态和全局静态) 其作用域是定义它的函数体或程序文件,其生存期是 整个程序。构造静态对象的次序是按它们在程序中出现的 次序先后,并在整个程序运行开始时(即在主函数运行前) 只构造一次。 3.全局对象 全局对象的作用域是整个程序,生存期是整个程序的 运行时间。它也是在程序运行前(即在主函数运行前)只 构造一次。 4.类中成员的构造次序是以类中声明成员的次序进行。 构造函数和析构函数是类的两种特殊的成员函数
32构造函数与析构函数 321构造函数 构造函数( constructor)是与类名同名的特殊的成员函 数,当定义该类的对象时,构造函数将被自动调用以实现 对该对象的初始化。构造函数不能有返回值,因而不能指 定包括void在内的任何返回值类型。构造函数的定义体可 与其它成员函数成员一样,放在类内或类外都可。构造函 数的定义格式为 类名(形参说明) 函数体} 构造函数既可定义成有参函数,也可义成无参函数,要 根据问题的需要来定。全局变量和静态变量在定义时,将 自动赋初值为0;局部变量在定义时,其初始值不固定的 而当对象被定义时,由于对象的意义表达了现实世界的实 U回
返回 27 3.2 构造函数与析构函数 3.2.1 构造函数 构造函数(constructor)是与类名同名的特殊的成员函 数,当定义该类的对象时,构造函数将被自动调用以实现 对该对象的初始化。构造函数不能有返回值,因而不能指 定包括void在内的任何返回值类型。构造函数的定义体可 与其它成员函数成员一样,放在类内或类外都可。构造函 数的定义格式为: 类名(形参说明) { 函数体 } 构造函数既可定义成有参函数,也可义成无参函数,要 根据问题的需要来定。全局变量和静态变量在定义时,将 自动赋初值为0;局部变量在定义时,其初始值不固定的。 而当对象被定义时,由于对象的意义表达了现实世界的实
32构造函数与析构函数 体,所以一旦定义对象,就必须有一个有意义的初始值 在C艹+中,在定义对象的同时,给该对象初始化的方法就 是利用构造函数。如 【例3-2】类 person包括4个数据成员,用来记录人员信息。 生成对象obj,并使用构造函数为ob赋予初始值。 include <windows h> include <iostream. h> class person 定义类 i private /类 Person的数据成员 char name [10 姓名 Int age ∥(龄 int salar /薪金 char tel[8] /电话 U回
返回 28 3.2 构造函数与析构函数 体,所以一旦定义对象,就必须有一个有意义的初始值, 在C++中,在定义对象的同时,给该对象初始化的方法就 是利用构造函数。如: 【例3-2】 类person包括4个数据成员,用来记录人员信息。 生成对象obj,并使用构造函数为obj赋予初始值。 # include <windows.h> # include <iostream.h> class Person //定义类 { private: //类Person的数据成员 char name [10] ; //姓名 int age ; //年龄 int salary ; //薪金 char tel[8]; //电话
32构造函数与析构函数 public /构造函数 Person Person( char *name, int age, int salary, char *xtel void disp o:) /函数 Person的定义 Person: Person( char *name, int age, int salary, char xtel strcpy(name, name);/给各数据成员提供初值 age≡xage salary salary strcpy(tel, xtel) U回 29
返回 29 3.2 构造函数与析构函数 public: //构造函数Person Person ( char *xname, int xage,int xsalary, char *xtel ) ; void disp () ; }; //函数Person的定义 Person :: Person ( char *xname,int xage, int xsalary, char *xtel ) { strcpy (name, xname) ; //给各数据成员提供初值 age = xage ; salary = xsalary ; strcpy (tel, xtel) ; }
32构造函数与析构函数 /函数disp的定义 void Person:: dispo i cout<<endl cout<<"姓名:"<<name<<endl cout<<"年龄:"<<age<< endl cout<<"工资:"<< salary<<endl cout<<"电话:"<<tel<endl<<endl;} ∥主函数 void ma ∥生成对象ob并初始化 Person obj(张立三",25,850,"45672314") l示obi obj. disp(;) U回
返回 30 3.2 构造函数与析构函数 //函数disp的定义 void Person::disp() { cout<<endl; cout << " 姓名:" << name << endl ; cout << " 年龄:" << age << endl ; cout << " 工资:" << salary << endl ; cout << " 电话:" << tel << endl<<endl ;} // 主函数 void main( ) { //生成对象obj并初始化 Person obj ("张立三", 25, 850,"45672314"); //显示obj obj.disp ( ) ; }