zoukankan      html  css  js  c++  java
  • 【C++学习笔记】static 关键字

    (阅读《C++ primer plus》可知 C++的static关键字跟Java还是很类似的)

    为什么需要static关键字:在文件A中定义的非局部变量language,在文件B中可以通过 extern string language进行引用; 这样一来,在B文件中就可以使用language了,而且B中的language和A中的language是同一个变量,指向同一个地址。如果不加extern,直接在B文件中申明string language是会报错的,因为A文件中的language是外向链接的,相当于全局变量,而C++有着单定义规则,一个变量在一个程序中不能定义两次。如果B中必须要有一个string language,并且是B自己的,与A中language无关的变量,则这时候需要使用static,static实际上指明了language的链接性是文件内部的,只在B文件内有效,并且B中language会hide掉A中的language

    例子,文件A内容如下

    #include "stdafx.h"
    #include <iostream>
    #include <string>
    using namespace std;
    string language = "us";
    void display();
    int main()
    {
        cout << "language in main: " << language << endl;
        display();
        cin.get();
        return 0;
    }

    文件B

    #include "stdafx.h"
    #include <iostream>
    #include <string>
    using namespace std;
    static string language = "cn";
    
    void display()
    {
        cout << "language in support: " << language << endl;
    }

    输出

    倘若文件B里去掉static关键字,将出现重复定义。B文件里static的意思是告诉编译器,

    1.该language作用域为B文件;

    2.在程序运行期间持续驻留内存

    3.覆盖A文件中定义的全局变量language,因此在B文件中的language都是"cn"

    上面的例子中,没有说明类的static变量的i情况,补充如下:

    1.类的static变量是属于类而非对象的,即所有对象共有一份该变量,这与Java类似

  • 相关阅读:
    MySQL存储引擎MyISAM和InnoDB有哪些区别?
    python发起post请求获取json数据使用requests方法
    和 Python 2.x 说再见!项目移到python3
    php memcache 缓存与memcached 客户端的详细步骤
    Ubuntu16.04安装Nginx+PHP5.6+MySQL5.6
    element-ui select 下拉框 实现分页 通过css样式
    技术_pm发展历程
    前端_git用法
    前端_javascript本地实现分页(摘录)
    生活_人生感悟
  • 原文地址:https://www.cnblogs.com/heben/p/9310777.html
Copyright © 2011-2022 走看看