zoukankan      html  css  js  c++  java
  • 普通函数加上static的作用

    static加到一个非类成员函数的函数(有点绕口,就是普通函数。因为类成员函数的static版本有其他的用途)前面,相当于匿名空间的作用——信息隐藏。翻译成白话版就是,只有在当前编译单元中可以被看到,而在别的编译单元中看不到。(什么是编译单元?就是一个展开了包含了头文件的cpp文件)

    看下面的两段代码:

    function.cpp:

    static void function(int &a)
    {
        a++;
    }

    main.cpp:

    #include<iostream>
    extern void function(int&);
    int main(){
            int a=0;
            function(a);
            std::cout<<a<<std::endl;
            return 0;
    }

    编译器报错:main.obj : error LNK2019: 无法解析的外部符号 "void __cdecl function(int &)"

    题外话:extern void function(int) 和extern void function(int &)不是同一个函数声明!这里一定要注意

  • 相关阅读:
    概率dp呜呜
    树上路径问题---点分治题集
    POJ 1741 Tree
    接下来的计划
    很逗 的网络赛历程
    Codeforces Round #264 (Div. 2) D
    似乎了解了树形dp/
    先胡乱搭一个blog
    POJ 1330 (LCA)
    文件操作
  • 原文地址:https://www.cnblogs.com/wangpei0522/p/3821145.html
Copyright © 2011-2022 走看看