static的作用?

gxqcdit 2002-08-13 09:45:21
小弟我正在看Thinking in c++; 有一问题请教大虾:
static最基本的含义是: 指位置不变的某个东西, 但是除了它的位置特性之外,还有没有其它特性使其与普通定义的变量有区别?
如在一个类里定义私有变量(或公有变量):static int i 与 int i;两种定义有何区别(除了位置关系)?
...全文
137 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
gxqcdit 2002-08-13
  • 打赏
  • 举报
回复
景仰之心犹如滔滔江水,黄河泛滥......
xiaoyaozi_2 2002-08-13
  • 打赏
  • 举报
回复
Static int i 该变量可以理解为全局变量,除非重新赋值否则其变量值不会改变
而int i 的变量为纯粹的局部变量,如在某个函数内定义的变量的有效范围就只局限在该函数体内,重新调用该函数时,该变量的值自动变成0;static int i 的变量在重新调用时,它的初值仍为上次的值。举例如下:
void Summary() //求和函数
{
int Sum1;
static int Sum2;
int i = 0;
for(i=0;i<3;i++)
{
Sum1++;
Sum2++;
}
return;
}
以上例子再第一次调用时sum1,sum2的值均为3,但第二次调用时,sum1仍为3,而sum2是6
c_vector 2002-08-13
  • 打赏
  • 举报
回复
在c中,static还有作用域的限制,它将用它修饰的变量可见性限制在它所在的特定编译单元里;在c++中,static如果用来修饰类中的数据成员或成员函数,表示这些数据成员或成员函数是属于类的,而不特别属于个别对象实例;用static修饰的类中成员函数只能访问类中的静态数据成员,因为它属于类,缺少一般成员函数的this隐含指针。
speakboy 2002-08-13
  • 打赏
  • 举报
回复
static int i 是指的静态局部变量,也就是说这种变量不是动态分配的,在程序的运行过程中,其存储空间只分配一次,只有在整个程序运行结束时,才收回空间!
Bind 2002-08-13
  • 打赏
  • 举报
回复
static int i :所有该类对象公有,如:

class A{
static int i;
};

class B
{
int i;
};

main()
{
A a1, a2;
a1.i = 1;
a2.i = 2;
ASSERT(a1.i == 2);

B b1, b2;
b1.i = 3;
b2.i = 4;
ASSERT(b1.i == 3);
}

FFXI 2002-08-13
  • 打赏
  • 举报
回复
static int i 是共享的,即所有类使用同一个拷贝。int i则对每一个实例都是独有的。

#include <iostream>
using namespace std;

class A
{
public:
static int iStatic;
int iNormal;

A() { iNormal = 0; };
};

int A::iStatic = 0;

main()
{
A a,b;

a.iStatic = 1;
a.iNormal = 1;

cout << a.iStatic << endl; // 输出 1
cout << a.iNormal << endl; // 输出 1
cout << b.iStatic << endl; // 输出 1
cout << b.iNormal << endl; // 输出 0
}

明白了吗?

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧