吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4121|回复: 0
收起左侧

[其他转载] C++static 关键字

[复制链接]
明次 发表于 2009-6-8 12:43
一、在面向过程设计中的static关键字

  1、静态全局变量

  定义:在全局变量前,加上关键字 static 该变量就被定义成为了一个静态全局变量。

  特点:

  A、该变量在全局数据区分配内存。

  B、初始化:如果不显式初始化,那么将被隐式初始化为0。

  C、访变量只在本源文件可见,严格的讲应该为定义之处开始到本文件结束。

  例(摘于C++程序设计教程---钱能主编P103):        //file1.cpp   
        #include<iostream.h>
        void fn();
        extern int n;
        void main()
        {
          n=20;
          cout << n << endl;
          fn();
        }
        //file2.cpp
        #include<iostream.h>
        static int n; //定义静态全局变量,初始化为0;
        void fn()
        {
          n++;
          cout << n << endl;
        }  文件分别编译能通过,但连接时file1.cpp 中的变量n找不到定义,产生连接错误。

  D、文件作用域下声明的const的常量默认为static存储类型。

  2、静态局部变量

  定义:在局部变量前加上static关键字时,就定义了静态局部变量。

  特点:

  A、该变量在全局数据区分配内存。

  B、初始化:如果不显式初始化,那么将被隐式初始化为0。

  C、它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,当定义它的函数或 语句块结束时,其作用域随之结束。

  3、静态函数(注意与类的静态成员函数区别)

  定义:在函数的返回类型前加上static关键字,函数即被定义成静态函数。

  特点:

  A、静态函数只能在本源文件中使用(这是与普通函数区别)

  例(摘于C++程序设计教程---钱能主编P103):           //file1.cpp
        void fn();
        void staticFn()
        void main()
        {
          fn();
          staticFn();
        }
        //file2.cpp
        #include<iostream.h>
        static void staticFn();
        void fn();
        void fn()
        {
          staticFn();
          cout << "this is fn()
";
        }
        void staticFn()
        {
          cout << "this is staticFn()
";
        }   连接时,将产生找不到函数staticFn()定义的错误。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-17 04:25

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表