其实和之前的函数什么的没有太大的区别,这里的类函数,就是给了一个限定范围,限定在类里边,类成员函数有两种定义方式。(在这只讲有关类成员函数的有关概念,其它暂且不谈)
//类与对象中的类成员函数类与对象中的类成员函数
//其实和之前的函数什么的没有太大的区别,这里的类函数,就是给了一个限定范围,
//限定在类里边,类成员函数有两种定义方式。
//
//第一种,类成员函数直接在类的内部进行定义。
// #include <iostream>
// using namespace std;
// class Box {
// double length;
// double breadth;
// double height;
// double getVolume(void) {
// return height*height*breadth;
// }
// };
//第二种方式,在类的外部使用范围解析运算符::定义该函数
// #include <iostream>
// using namespace std;
// class Box {
// double length;
// double breadth;
// double height;
// double getVolume(void);
//};
// double Box::getVolume(void) {
// return length*breadth*height
// }
//稍微注意一个点,在::范围解析运算符之前必须使用类名。
// 调用成员函数是在对象上使用点运算符 (.) 进行调用
//Box myBox;创建一个对象
// myBox.getVolume(); 调用该对象的成员函数
//在使用类函数时,要注意调用它的权限(它能否被调用)以及它的作用域(函数能使用什么范围中的数据和函数)。
//例如私有的成员函数只能被本类中的其它成员函数所调用,而不能被类外调用。
//成员函数可以访问本类中任何成员(包括私有的和公用的),可以引用在本作用域中有效的数据。
//一般的做法是将需要被外界调用的成员函数指定为public,它们是类的对外接口。但应注意,并非要求把所有成员函数都指定为public。
//有的函数并不是准备为外界调用的,而是为本类中的成员函数所调用的,就应该将它们指定为private。
//这种函数的作用是支持其它函数的操作,是类中其它成员的工具函数(utility function),类外用户不能调用这些私有的工具函数。
//类的成员函数是类体中十分重要的部分。如果一个类中不包含成员函数,就等同于C语言中的结构体了,体现不出类在面向对象程序设计中的作用。
// 需要注意的一点是,先在类内对成员函数进行声明,后在类外对其进行定义是一个好习惯,在类内部定义的函数属于内联函数
//下面进行Box类与对象及成员函数的使用的具体代码的实现
#include <iostream>
using namespace std;
class Box {
public:
double length;
double breadth;
double height;
//下面进行成员函数的声明
double getVolume(void);
void setlength(double len);
void setheight(double hei);
void setbreadth(double bre);
};
double Box::getVolume(void) {
return height*length*breadth;
}
void Box::setlength(double len) {
length=len;
}
void Box::setbreadth(double bre) {
breadth=bre;
}
void Box::setheight(double hei) {
height=hei;
}
//以上是成员函数的定义部分,下面开始编写主函数
int main() {
Box Box1;//声明Box1 (也就是创建一个Box1)
Box Box2;//声明Box2
double volume=0.0;//初始化体积,用来存储体积
double volume2=0.0;
//Box1详述
Box1.setlength(6.0);
Box1.setbreadth(8.0);
Box1.setheight(9.0);
//Box2详述
Box2.setlength(6.0);
Box2.setbreadth(8.0);
Box2.setheight(6.0);
volume=Box1.getVolume();
cout<<"Box1的体积为:"<<volume<<endl;
volume=Box2.getVolume();
cout<<"Box2的体积为:"<<volume<<endl;
return 0;
}
注意:在类体中直接定义函数时,不需要在函数名前面加上类名,因为函数属于哪一个类是不言而喻的。