Where there is a dream ,there is hope
C++博客
::
首页
::
联系
::
聚合
::
管理
64 Posts :: 0 Stories :: 8 Comments :: 0 Trackbacks
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(1)
给我留言
查看公开留言
查看私人留言
我参与的团队
随笔分类
C#(2)
C/C++(19)
EFFECTIVE-STL学习笔记(3)
Mono
monodevelop
TCP/IP(1)
翻译文章(4)
算法/数据结构(1)
折腾UBUNTU(2)
职业人生(1)
随笔档案
2011年11月 (1)
2011年10月 (7)
2011年9月 (2)
2011年8月 (7)
2011年7月 (3)
2011年6月 (5)
2011年4月 (2)
2011年3月 (5)
2011年2月 (8)
2011年1月 (1)
2010年12月 (7)
2010年11月 (9)
2010年10月 (4)
2010年7月 (3)
收藏夹
生活思考(1)
C++
C#讲师-设计模式-数据结构
范怀宇
韩湘子
专门解决各种C++疑难杂症
搜索
最新评论
1. re: 匿名空间
.就空间看快乐
--何霞飞
2. re: 匿名空间
u厉害
--何霞飞
3. re: 服务器设计-转
这种文章挺少的噢。不是做服务器的,多了解一些总是好的。设计真是一门有意思的学问。
--K.V
4. re: josephon问题
不过这个模拟过程非常不好,对于100000以上的人数来说简直就是悲剧。。。
--Husiwa
5. re: 简洁的字符串连接函数
@木头奎
的确有缺点,但这个函数的实现过程还是有其发作的
--Husiwa
阅读排行榜
1. 转载:vector find(2367)
2. vector 查找指定元素(1767)
3. C#结构体序列化(1246)
4. windows.h与winsock2.h的包含顺序(1135)
5. 模板类静态变量初始化(1099)
评论排行榜
1. 匿名空间(2)
2. 简洁的字符串连接函数(2)
3. C++指针探讨 (一)数据指针(1)
4. 服务器设计-转(1)
5. Orx教程--4.动画(1)
C/C++中static关键字
static关键字在C和C++中的用法稍有区别,主要是C++扩展了static关键字的作用
C 用法
1.修饰函数成员变量:例
//
test.h
void
test_static_var();
//
test.c
void
test_static_var()
{
static
int
var
=
0
;
//
!不初始化默认为0
var
++
;
printf(
"
static int var : %d \n
"
, var);
}
//
main.c
int
main()
{
for
(
int
i
=
0
; i
<
10
; i
++
)
{
test_static_var();
}
getchar();
return
0
;
}
2.在文件级别(即:在函数体外)修饰 变量或者函数,则表示该变量只在该文件中可见及可用
//
test.h
void
test_static_funtion_one();
void
test_static_fuction_two();
//
test.c
void
test_static_funtion_one()
{
printf(
"
This is a normal function. \n
"
);
}
static
void
test_static_fuction_two()
{
printf(
"
This is a function modified by static. \n
"
);
}
//
main.c
int
main()
{
test_static_funtion_one();
test_static_fuction_two();
getchar();
return
0
;
}
这样就会报错:LNK2001: 无法解析的外部符号 "void __cdecl test_static_fuction_two(void)" (
?test_static_fuction_two@@YAXXZ
)
原因就是test_static_fuction_two()被修饰为static ,如果main中不调用的话,编译可以通过(VS08),否则便以失败
修饰为static后,它只能在test.c中使用。
C++中包含了前两种方法,又扩展了下面两种方法:
3.修饰class 数据成员,称为 静态数据成员
4.修饰class 函数成员,称之为 静态成员函数
//
test.h
class
TestA
{
public
:
static
int
s_count;
static
int
getCount();
public
:
int
m_value;
}
;
//
test.c
int
TestA::s_count
=
0
;
int
TestA::getCount()
{
//
m_value+=m_value; 静态函数中只能操作静态数据成员
return
s_count;
}
因为静态成员函数没有传入隐式的this指针,所以,它不能使用. 、->操作符 ;不能是virtual 的,不能和非静态的同名
posted on 2011-02-16 12:21
IT菜鸟
阅读(196)
评论(0)
编辑
收藏
引用
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Copyright @ IT菜鸟
Powered by:
.Text
and
ASP.NET
Theme by:
.NET Monster