public ∥公有成员,声明类的外部接口 void setcylinder( doubler; double h);∥成员函数,用来设置圆柱体的半径 和高 double getradiuso; ∥成员函数,用来获取圆柱体的半径 double getheightO ∥成员函数,用来获取圆柱体的高 double volumed; ∥成员函数,用来计算圆柱体的体积 double surface area o; ∥)员函数,用来计算圆柱体的表面 积 private: 有成员 double radius 数据成员,声明圆柱体的半径 double height 数据成员,声明圆柱体的高 说明:把数据成员都声明为私有,并另外建立 getradius0、 getheight0及 setcylindery(函数来访间这些私有数据成员。使得程序的其他部分对数据成 员的访问只能通过公有成员函数来进行,因而数据成员类型改变所产生的 影响被控制在类的内部,对程序的其他部分没有影响。 注把私有成员的声明放在了最前面,注意这里省略了关键字 Private (续)
public: //公有成员,声明类的外部接口 void setcylinder(double r,double h); //成员函数,用来设置圆柱体的半径 和高 double getradius(); //成员函数,用来获取圆柱体的半径 double getheight(); //成员函数,用来获取圆柱体的高 double volume(); //成员函数,用来计算圆柱体的体积 double surface_area(); //成员函数,用来计算圆柱体的表面 积 private: //私有成员 double radius; //数据成员,声明圆柱体的半径 double height; //数据成员,声明圆柱体的高 }; 注 把私有成员的声明放在了最前面,注意这里省略了关键字private。 说明:把数据成员都声明为私有,并另外建立getradius()、getheight()及 setcylinder()函数来访问这些私有数据成员。使得程序的其他部分对数据成 员的访问只能通过公有成员函数来进行,因而数据成员类型改变所产生的 影响被控制在类的内部,对程序的其他部分没有影响。 (续)
例73在声明类时把私有成员放在最前面 class cvlinder ∥有成员 double radius: double height; public ∥公有成员 void setcylinder(doubler, double h); double getradius(; double getheighto double volume; double surfacearea(; 在声明类时,一般来说应该把类的所有数据成员都声明为私有的,同时声明 公有成员函数来访问这些数据成员 注在类内不允许对声明的数据成员进行初始化
在声明类时把私有成员放在最前面 class Cylinder { //私有成员 double radius; double height; public: //公有成员 void setcylinder(double r,double h); double getradius(); double getheight(); double volume(); double surfacearea(); }; 在声明类时,一般来说应该把类的所有数据成员都声明为私有的,同时声明 公有成员函数来访问这些数据成员。 注 在类内不允许对声明的数据成员进行初始化。 例 7.3
例7.4不能在声明类时给数据成员赋初值 class cylinder public void setcylinder(doubler, double h); double getradiuso; double getheighto; double volume; double surfacearea private double radius (5.0) ∥错误,不能在类中给数据成员赋初值 double height=10.0 ∥错误,不能在类中给数据成员赋初值 对于成员函数,类的声明内一般只声明其函数原型,具体实现要在类外定义 它的一般格式如下: 返回值类型类名::成员函数名(参数表) 函数体 叫作用域运算符,它标明所 要定义的函数属于哪个类
对于成员函数,类的声明内一般只声明其函数原型,具体实现要在类外定义。 不能在声明类时给数据成员赋初值 class Cylinder { public: void setcylinder(double r,double h); double getradius(); double getheight(); double volume(); double surfacearea(); private: double radius(5.0); //错误,不能在类中给数据成员赋初值 double height=10.0; //错误,不能在类中给数据成员赋初值 }; 它的一般格式如下: 返回值类型 类名::成员函数名(参数表) { 函数体 } “::”叫作用域运算符,它标明所 要定义的函数属于哪个类。 例 7.4
例75“圆柱体”类成员函数的定义 void Cylinder: setcylinder(double r, double h) radIus-r, height=h; double cylinder: getradiuso return radius double cylinder: getheightO return height; double cylinder: volume double vol; vol=3. 1415926 radius*radius * height; return vol
“圆柱体”类成员函数的定义 void Cylinder::setcylinder(double r,double h) { radius=r; height=h; } double Cylinder::getradius() { return radius; } double Cylinder::getheight() { return height; } double Cylinder:: volume() { double vol; vol=3.1415926*radius*radius*height; return vol; } 例 7.5
double Cylinder: surfacearea double area; area=2*3. 1415926radius*height+2*3. 1415926radius radius: return area; 在定义类的成员函数时,也可以对参数设置默认值 例7.6在定义成员函数时可以为参数设默认值 void Cylinder: setcylinder(double r=0, double h=0) radius=r heighth 定义类的成员函数时,对一些只有一、二条语句的函数可以把函数定义成内 在类的声明中定义 内联成员函数的定义 在类外定义
double Cylinder::surfacearea() { double area; area=2*3.1415926*radius*height+2*3.1415926*radius*radius; return area; } 在定义类的成员函数时,也可以对参数设置默认值。 在定义成员函数时可以为参数设默认值 void Cylinder::setcylinder(double r=0,double h=0) { radius=r; height=h; } 定义类的成员函数时,对一些只有一、二条语句的函数可以把函数定义成内 联函数。 内联成员函数的定义 在类的声明中定义 在类外定义 例 7.6