在一般的函數(shù)前面加上static,作用是:
加了static后表示該函數(shù)失去了全局可見性,只在該函數(shù)所在的文件作用域內(nèi)可見
當(dāng)函數(shù)聲明為static以后,編譯器在該目標(biāo)編譯單元內(nèi)只含有該函數(shù)的入口地址,沒有函數(shù)名,其它編譯單元便不能通過該函數(shù)名來調(diào)用該函數(shù),這也是對1的解析與說明
在類的成員函數(shù)前面加上static標(biāo)志符:
成員函數(shù)是屬于類的,而非對象的,也就是所有該類的對象共同擁有這一個成員函數(shù),而不是普通的每個對象各自擁有一個成員函數(shù)# 歡迎使用Markdown編輯器寫博客
轉(zhuǎn):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 toa()'
collect2: error: ld returned 1 exit status