码迷,mamicode.com
首页 > 编程语言 > 详细

C++静态变量和静态成员函数的怪脾气

时间:2015-04-06 06:30:18      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:c++      class   静态   

     今天为了代码更加简洁,用了一个class MSGHelper来定义一些静态成员变量和静态成员函数。

开始时,我的写法是(不是真实代码,只是举例):

<strong>class helper
{
	static int index;
	static void SENDMSG(tcpsocket *&,string &);
};
static int helper::index=1;
static void helper::SENDMSG(tcpsocket * &sock,string &MSG)
{
	if(!sock || MSG.length()==0)
		return;
	sock->write(MSG);
	return ;
}</strong>

竟然编译报错,后来更正为:

<strong>class helper
{
	static int index;
	static void SENDMSG(tcpsocket *&,string &);
};
 int helper::index=1;
 void helper::SENDMSG(tcpsocket * &sock,string &MSG)
{
	if(!sock || MSG.length()==0)
		return;
	sock->write(MSG);
	return ;
}</strong>

即静态的成员函数或变量在类体外进行定义时要去掉static标识符;

注意:只有当类中的静态成员变量类型是常整形时,可以在类体内初始化,如:

class simple_string
{
	static const int length=1;
	static char str[length + 1]; 
};
char simple_string::str[length +1]="default string";

其他类型,即使声明为const类型也不能在静态类中初始化。




C++静态变量和静态成员函数的怪脾气

标签:c++      class   静态   

原文地址:http://blog.csdn.net/tianyuan521521/article/details/44895103

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!