第9章关于类和对象的进一步讨论 91构造函数 9.2析构函数 9.3调用构造函数和析构函数的顺序 9.4对象数组 9.5对象指针 9.6共用数据的保护 9.7对象的动态建立和释放 9.8对象的赋值和复制 9.9静态成员 910友元 9.11类模板
第9章 关于类和对象的进一步讨论 9.1 构造函数 9.2 析构函数 9.3 调用构造函数和析构函数的顺序 9.4 对象数组 9.5 对象指针 9.6 共用数据的保护 9.7 对象的动态建立和释放 9.8 对象的赋值和复制 9.9 静态成员 9.10 友元 9.11 类模板
9.1构造函数 9.1.1对象的初始化 类的数据成员是不能在声明类时初始化 怎样对类的数 据成员进行初 始化?
9.1 构造函数 9.1.1 对象的初始化 类的数据成员是不能在声明类时初始化 怎样对类的数 据成员进行初 始化?
类中所有的成员都是公用的,则可以在定义对象时对数 据成员进行初始化 class Time public:. 如果数据成员是私有的,或者 hour; 类中有private或protected的成员, minute; 就不能用这种方法初始化 sec; 为 Time t1={14,56,30}; 和结构体变量的初始化是差不多 的,在一个花括号内顺序列出各 公用数据成员的值,两个值之间 用逗号分隔
类中所有的成员都是公用的,则可以在定义对象时对数 据成员进行初始化 class Time {public: hour; minute; sec; }; Time t1={14,56,30}; 和结构体变量的初始化是差不多 的,在一个花括号内顺序列出各 公用数据成员的值,两个值之间 用逗号分隔 如果数据成员是私有的,或者 类中有private或protected的成员, 就不能用这种方法初始化
例8.3将例8.2的程序 int main()) 调用set time函数来 改用含成员函数的类 Time t1; 为数据成员赋值 来处理。 t1.set time()月 个类定义了多 #include <iostream> t1.show time(); 个对象,而且类 using namespace std; Time t2; 中的数据成员比 class Time t2.set time(); 较多,那么,程 public: t2.show time(); 序就显得非常臃 void set_time(); return 0; 肿烦琐。 void show time(); 侧1但 private: void Time:set time() int hour; cin>>hour;cin>>minute; int minute; cin>>sec; int sec; void Time:show time() cout<<hour<<":"<<minute<<":"< 运行情况与程序(a)相同 sec<<endl;
例8.3 将例8.2的程序 改用含成员函数的类 来处理。 #include <iostream> using namespace std; class Time {public: void set_time( ); void show_time( ); private: int hour; int minute; int sec; }; int main( ) {Time t1; t1.set_time( ); t1.show_time( ); Time t2; t2.set_time( ); t2.show_time( ); return 0; } 运行情况与程序(a)相同 void Time∷set_time( ) { cin>>hour; cin>>minute; cin>>sec; } void Time∷show_time( ) { cout<<hour<<″:″<<minute<<″:″<< sec<<endl; } 用成员函数来对对 象中的数据成员赋 初值 调用set_time函数来 为数据成员赋值 一个类定义了多 个对象,而且类 中的数据成员比 较多,那么,程 序就显得非常臃 肿烦琐
9.1.2构造函数的作用 C++提供了构造函数(constructor)来处理对象的初始化 构造函数是一种特殊的成员函数 不需要用户来调用它 在建立对象时自动执行 特点 构造函数的名字必须与类名同 名不能由用户任意命名 不具有任何类型,不返回任何值 功能是由用户定义的, 用户根据初始化的要 求设计函数体和函数 参数
9.1.2 构造函数的作用 C++提供了构造函数(constructor)来处理对象的初始化 构造函数是一种特殊的成员函数 不需要用户来调用它 在建立对象时自动执行 构造函数的名字必须与类名同 名不能由用户任意命名 不具有任何类型,不返回任何值 功能是由用户定义的, 用户根据初始化的要 求设计函数体和函数 参数 特 点