class Stack;
此句只是作为Stack class的前置申明,只是将calss名次告诉编译器,并未提供此class的任何其他信息。前置申明使得我们可以进行类指针的定义,或以此class作为数据型别:
//以下这种写法,必须先有class的前置申明才行
Stack *pt=0;
void process (const Stack&);
接下来,在定义实际的Stack class object或取用Stack的任何一个member之前,必须先定义class本身。

所有member functions 都必须在class主体内进行申明,至于是否要同时进行定义,可以自由决定。如果要在class主体内定义,这个member function会自动地被视为inline函数。
对于inline函数而言,定义与class主体内或主体外,并没有什么分别,然而就像non-member inline function一样,它也应该被置于同文件中,class定义式及其inline member function 通常都会被放在与class同名的头文件中,
例如:Stack class 的定义和其empty()函数定义都应该置于Stack.h 头文件中,此即用户想要使用Stack时应该包含的文件。
non-inline member function应该在程序代码文件中定义,该文件通常和class同名,其后接着扩展名.C,.cc,.cpp或.cxx。
posted on 2009-07-30 21:29  Myhsg  阅读(1668)  评论(0编辑  收藏  举报