static的问题!

tomsx 2003-08-13 01:54:19
我们知道static有两个功能,一个是改变变量的存储区,另一个就是控制变理的可见性。但对于:class A{};static A a;这样的static对象又是意味着什么呢?它与不加static的对象又有什么区别呢?很不明白一个静态的对象的意义。



请高手指教!
...全文
27 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
maxcai 2003-08-13
  • 打赏
  • 举报
回复
class A{};static A a;这样的static对象又是意味着什么呢?
和static 简单类型 变量名 一样的,就是一个全局变量
hchinside 2003-08-13
  • 打赏
  • 举报
回复
全局变量也分为静态和非静态
静态:如果多个文件都include同一个h文件, 这个h文件中有static变量,那么这多个文件中各生成一份变量,互相独立。
非静态:上述情况,编译错误。错误是有多个同名变量。
所以,static全局变量的作用域是文件作用域,而非静态是全局作用域
Zark 2003-08-13
  • 打赏
  • 举报
回复
在广泛意义上来说,“变量”与“对象”是具有相同的含义。

int a;

A a;
在被static修饰时具有同样的含义。
ybco 2003-08-13
  • 打赏
  • 举报
回复
static A a; means a is created only once. It is the same as

void f()
{
static A a; // this is done only oncwe when the f() is called the first time; Same as
static int x = 0; // only set once;

x++; // add 1 to the previous value.
}

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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