Chinaunix首页 | 论坛 | 博客
  • 博客访问: 819502
  • 博文数量: 756
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 4980
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:40
文章分类

全部博文(756)

文章存档

2011年(1)

2008年(755)

我的朋友

分类:

2008-10-13 16:07:17

zyl910:成员函数中的静态变量呢?
(发表于2006-12-10 10:41:00)

277796230:本人在VC++.NET 2003 下调试时,得到的结果是:
1.静态全局变量能被其它文件所用.
2.静态函数能被其它文件所用.
//static.h file
#include 
using namespace std;
static int n; //定义静态全局变量

static void fn()
{
static int i=10;
i = 888;
n++;
cout<}

//main.cpp
#include 
#include "static.h"
using namespace std;

extern  int n;

static void fn();
void f()
{
static int t = 909;
cout<<"t = "<}
int main()
{
n=20;
cout< fn();
cout<<"t value = "<}
(发表于2006-12-10 23:56:00)

实况狐狸:老兄,自动变量和局部变量这两个概念不能混为一谈吧?对于我们这些老手来说一看就明白你的自动变量指的是什么,但是对于新手来说也许会糊涂甚至是误会很长一段时间了,注意用词的准确性,这也是写文章要注意的一部分啊。
(发表于2006-12-11 9:29:00)

daoxiangcun:我用vc6.0将上面的静态全局变量调试了一下
//main.cpp File
//when not include the head file "static.h"
#include
#include "static.h" //将头文件加进去
extern int n;
int main(void)
{
n=20;
cout<<"n="< return 0;
}
//static.h File
static int n;
输出的结果是:n=20;
如果上面main.cpp文件不包含头文件static.h的话,连接时会报错:
error LNK2001: unresolved external symbol "int n" (?n@@3HA)
指出没有外部变量n,也就是说在static.h中声明的静态变量n在main.cpp中是不可见的。
对于静态函数也是一样,不知道其中有没有问题,还望大侠指教。

(发表于2006-12-16 19:07:00)

_东东_:我把你的程序调试了一下
发现和你说的不一样
也就是说#include "static.h"不加可以运行,可以得到正确结果.
而说没这个头文件 "static.h"
(发表于2006-12-21 19:53:00)

zwlstone:实况狐狸老兄看的的确挺认真的,可能否在找出他人不足的时候给点补充,也好让我这样的新手看个明白,我把我的理解贴出来,希望老手指正:
局部变量:是从变量的作用域的角度来称谓的,可分为局部变量和全局变量。
自动变量:是从变量的存储类别的角度来称谓的,分为自动的(auto),静态的(static),寄存器的(register),外部的(extern)。
(发表于2007-1-27 23:42:00)

passmatlab:IT资源网:
编程,IT资源网是国内最全的IT资源平台,学习软件,学习硬件的好去处,涵盖各领域,各语言热门技术-java技术,jsp,jdbc,j2ee,struts,spring,hibernate,java基础,.net学习,.net基础,php,asp,网站开发,安全技术,网页制作,图形处理,网络技术,热门软件学习,服务器技术,存储技术
(发表于2007-8-12 12:38:00)

clxye:这篇文章分析的很透彻啊!!
(发表于2007-8-23 9:06:00)

birdsinging:“由于没有this指针的额外开销,因此静态成员函数与类的全局函数相比速度上会有少许的增长” 这句话中:
1.类的全局函数 是什么意思?应该是 全局函数吧
2.如果是全局函数,那么它也没有this指针,何来速度比较呢?
(发表于2008-1-24 15:52:00)

birdsinging:解答关于277796230与daoxiangcun的问题:
两个问题,看起来好像都与“静态全局变量/函数不能被其它文件所用”相悖。其实不然,因为二者都是在头文件中的缘故。在另一个实现文件(cpp)中extern一下变量/函数的话,便会编译错误。作者文中说的是对的。不过经过这么一折腾,更加深了对这句话的理解
(发表于2008-1-24 17:40:00)

huxiao2005:内存分配图是错的。
(发表于2008-7-23 16:24:00)

..........................................................................
--------------------next---------------------

阅读(281) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~