51.2成员函数的定义 在前面的小结中,只对成员函数作了一个声明,或 者讲只给出了函数的原型,并没有对函数进行定义。函 数通常在类的说明之后进行,其格式如下 返回值类型类名:函数名(参数表) 函数体 其中运算符“::”称为作用域解析运算符( Scope esolution operator),它指出该函数是属于哪一个类 的成员函数。当然也可以在类的定义中直接定义函数
5.1.2 成员函数的定义 在前面的小结中,只对成员函数作了一个声明,或 者讲只给出了函数的原型,并没有对函数进行定义。函 数通常在类的说明之后进行,其格式如下: 返回值类型 类名::函数名(参数表) {……} //函数体 其中运算符“ :: ”称为作用域解析运算符(scope resolution operator),它指出该函数是属于哪一个类 的成员函数。当然也可以在类的定义中直接定义函数
51.3对象的创建与使用 对象是类的实例( instance),正如在前几章称变量是数据类型的实 例一样。声明一种数据类型只是告诉编译系统该数据类型的结构形式,并 没有预定内存,或者讲并没有创建了可用来存放数据的变量。类只是一个 样板,以此样板可以在内存中开辟出一个个同样结构的实例对象 创建类的对象可以有两种常用方法。第一种是直接定义类的实例 对象 GOods car 这个定义创建了 GOods类的一个对象Car,同时为它分配了属于它自己 的存储块,用来存放数据和对这些数据实施操作的成员函数(代码)。与 变量定义一样,一个对象只在定义它的域中有效。 第二种是采用动态创建类的对象的方法,将在第七章中学习,当然变 量也同样可动态创建。所谓动态指在程序运行时建立对象。而前一种是在 编译时(程序运行前)建立 个样板可以创造出无数相同的物品来,同样,一个类可以创建 出无数同样组成的对象来
5.1.3 对象的创建与使用 对象是类的实例(instance),正如在前几章称变量是数据类型的实 例一样。声明一种数据类型只是告诉编译系统该数据类型的结构形式,并 没有预定内存,或者讲并没有创建了可用来存放数据的变量。类只是一个 样板,以此样板可以在内存中开辟出一个个同样结构的实例——对象。 创建类的对象可以有两种常用方法。第一种是直接定义类的实例—— 对象: CGoods Car; 这个定义创建了CGoods类的一个对象Car,同时为它分配了属于它自己 的存储块,用来存放数据和对这些数据实施操作的成员函数(代码)。与 变量定义一样,一个对象只在定义它的域中有效。 第二种是采用动态创建类的对象的方法,将在第七章中学习,当然变 量也同样可动态创建。所谓动态指在程序运行时建立对象。而前一种是在 编译时(程序运行前)建立。 一个样板可以创造出无数相同的物品来,同样,一个类可以创建 出无数同样组成的对象来
51.3对象的创建与使用 有两种方法可存储对象。 对象1 对象2 对象n对象1对象2 对象n 数据区数据区 数据区 数据区傲据区 数据区 代码区代码区 代码区 公共代码区 图5各对象完全独立地安排内存 图52各对象的代码区共用的方案 的方案
5.1.3 对象的创建与使用 有两种方法可存储对象。 数据区 代码区 对象1 数据区 代码区 对象2 数据区 代码区 对象n ..... . 图5.1各对象完全独立地安排内存 的方案 数据区 对象1 数据区 对象2 数据区 对象n . . . . . . 图5.2各对象的代码区共用的方案 公共代码区
51.3对象的创建与使用 【例51】商品类对象应用实例 include<iostream h> #include <iomanip. h> #include<string.h> /省略了类定义 void main o GOods char string[21]i int number i float pr i
5.1.3 对象的创建与使用 【例5.1】商品类对象应用实例: #include<iostream.h> #include<iomanip.h> #include<string.h> //省略了类定义 void main( ){ CGoods car ; char string[21] ; int number ; float pr ;
513对象的创建与使用xn,m r Amount Price i cout≤<“请输入汽车型号:” Total value; 10 cin getline( string,20);//输入串长必须小于20 RegisterGoods(char米 nt, float); cout<<“请依次输入汽车数量与单价: CountTotal( void)i cin>>number>>pr i GetName(char*)i car. RegisterGoods(string, number, pr);GetAmount(void) car. CountTotalo GetPrice(void) string[o]=\o冫//字符串 string清零 GetTotal_ value(void) ifi car. GetName( string)// string赋值 car Name cout<<setw(20)<<string<<setw(5)<<car. GetAmount(://A cout<<setw(10)<<car. GetPriceOk<setw(20)<<car. GetTotal valueOk <endl i//B minicar 5 10
5.1.3对象的创建与使用 cout<<“请输入汽车型号:” ; cin.getline(string , 20) ; //输入串长必须小于20 cout<<“请依次输入汽车数量与单价:” ; cin>>number>>pr ; car.RegisterGoods(string , number , pr) ; car.CountTotal() ; string[0]=’\0’ ; //字符串string清零 car.GetName(string) ; //string赋值car.Name cout<<setw(20)<<string<<setw(5)<<car.GetAmount() ; //A cout<<setw(10)<<car.GetPrice()<<setw(20)<<car.GetTotal_value()< <endl ; //B } 成员名 Name[21] ; Amount ; Price ; Total_value ; RegisterGoods(char*,int,float) ; CountTotal(void) ; GetName(char*) ; GetAmount(void) ; GetPrice(void) ; GetTotal_value(void) ;}; minicar 5 2 10 minicar 5 2 10