类的静态成员函数定义

在类中这样定义2个静态成员函数有什么区别吗? 只是打个比方。

class socket
{
public:
static int recv();
int static send();

};

static  int   recv();
int    static   send();

二者同义,且都是标准允许的写法,只是前者较符合习惯

就如

 int16_t typedef shortint;

也是合法的,但一般只会把typedef放在语句的最前面……

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-19
第二种声明应该是非法的,函数名前应该是返回类型int,再前面才是修饰符static。追问

但是我有一个程序就是这么声明的,没有出现错误,可以运行。我只是看不懂这里的代码。

追答

既然可以运行,从这个意义上讲,没有区别。
那我想说的是第二种绝对极不规范,static是修饰函数的,理应放在int之前。

第2个回答  2015-09-21
静态成员不可在类体内进行赋值,因为它是被所有该类的对象所共享的。你在一个对象里给它赋值,其他对象里的该成员也会发生变化。为了避免混乱,所以不可在类体内进行赋值。
静态成员的值对所有的对象是一样的。静态成员可以被初始化,但只能在类体外进行初始化。
一般形式:
数据类型类名::静态数据成员名=初值
注意:不能用参数初始化表对静态成员初始化。一般系统缺省初始为0。

静态成员是类所有的对象的共享的成员,而不是某个对象的成员。它在对象中不占用存储空间,这个属性为整个类所共有,不属于任何一个具体对象。所以静态成员不能在类的内部初始化,比如声明一个学生类,其中一个成员为学生总数,则这个变量就应当声明为静态变量,应该根据实际需求来设置成员变量。
相似回答