在一般的函数前面加上static,作用是:
加了static后表示该函数失去了全局可见性,只在该函数所在的文件作用域内可见
当函数声明为static以后,编译器在该目标编译单元内只含有该函数的入口地址,没有函数名,其它编译单元便不能通过该函数名来调用该函数,这也是对1的解析与说明
在类的成员函数前面加上static标志符:
成员函数是属于类的,而非对象的,也就是所有该类的对象共同拥有这一个成员函数,而不是普通的每个对象各自拥有一个成员函数# 欢迎使用Markdown编辑器写博客
转:https://blog.csdn.net/lulu_6666/article/details/79570335
测试:
//c.h
static void a();
void b();
//b.cpp
#include "c.h"
#include <iostream>
using namespace std;
static void a(){
cout<<"lala"<<endl;
}
void b(){
a();
}
实验一:
#include "c.h"
int main(){
b();
}
输出:lala
实验二:
#include "c.h"
int main(){
a();
}
输出:In file included from a.cpp:1:0:
c.h:5:13: warning: ‘void a()’ used but never defined [enabled by default]
static void a();
^
/tmp/ccUcWE5P.o: In function main': a.cpp:(.text+0x5): undefined reference to
a()'
collect2: error: ld returned 1 exit status