#include <iostream.h>
#include <string.h>
class student
{
public:
student(char *name);
~student();
static student *findname(char *name);
protected:
char *stname;
static student *first;
student *next;
};
static student *findname(char *name);这句为什么要用student来定义?他是属于什么用法??谢谢各位!
静态成员函数,可以这样调用:
student::findname("xxx");
也可以这样
student a;
a.findname("xxx");
但是那个 student *next;他不是静态成员函数,为什么在class student{}里面中有又用到了 student *next,我试过那个定义student next是不可以编译成功的,为什么?谢谢
@毅青: 因为定义student next的时候,在class student内部,这时候student没有complete。也就是说编译器不知道sizeof(student)的大小。而如果用student *next就没问题,因为指针的大小是固定的。
为了支持链式表达式,例如
student a;
a.findname("you!")->giveMeAGun();
static student *findname(char *name); 这句很直白的啦, findname是根据name查找一个student, 当然返回可以student *啦,另外,查找这个工作不需要有一个student, 当然就声明为静态的啦;其实findname这个签名最好改为findByName更加确切些,看程序时,要注意程序的语义! 随便哪本C++语法书上都会给你上面语法的解释。