类成员函数是类的一个成员,它可以操作类的任意对象,可以访问对象中的所有成员。
::
:范围解析运算符,也叫做作用域区分符,指明一个函数属于哪个类或一个数据属于哪个类。
::
:可以不跟类名,表示全局数据或全局函数(即非成员函数)。
成员函数可以定义在类定义内部,或者单独使用范围解析运算符 ::
来定义,调用成员函数是在对象上使用点运算符(.
)。
实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| #include <iostream> using namespace std; class Box { public: double length; double breadth; double height; double getVolume(void); };
double Box::getVolume(void) { return length * breadth * height; }
|
定义
在类中的成员函数缺省都是内联的,称作内联函数
,即便没有使用 inline
标识符。
如果在类中未给出成员函数定义,而又想内联该函数的话,那在类外要加上 inline
,否则就认为不是内联的。
实例:
1 2 3 4
| class A { public:void Foo(int x, int y) { } }
|
将成员函数的定义体放在类声明之中虽然能带来书写上的方便,但不是一种良好的编程风格,上例应该改成:
1 2 3 4 5 6 7 8
| class A { public: void Foo(int x, int y); }
inline void A::Foo(int x, int y){}
|
关键字 inline
必须与函数定义体放在一起才能使函数成为内联,仅将 inline
放在函数声明前面不起任何作用。
1 2 3 4 5 6 7
| inline void Foo(int x, int y); void Foo(int x, int y){}
void Foo(int x, int y); inline void Foo(int x, int y) {}
|
实例1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| #include <iostream>
using namespace std;
class Box { public: double length; double breadth; double height;
double getVolume(void); void setLength(double len); void setBreadth(double bre); void setHeight(double hei); };
double Box::getVolume(void) { return length * breadth * height; }
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; Box Box2; double volume = 0.0;
Box1.setLength(6.0); Box1.setBreadth(7.0); Box1.setHeight(5.0);
Box2.setLength(12.0); Box2.setBreadth(13.0); Box2.setHeight(10.0);
volume = Box1.getVolume(); cout << "Box1 的体积:" << volume << endl;
volume = Box2.getVolume(); cout << "Box2 的体积:" << volume << endl; return 0; }
|
结果:
1 2
| Box1 的体积: 210 Box2 的体积: 1560
|
实例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| int month; int day; int year;
void Set(int m, int d, int y) { ::year = y; ::day = d; ::month = m; }
Class Tdate { public: void Set(int m, int d, int y) { ::Set(m, d, y); }
private: int month; int day; int year; }
|