例:如果在文件中定義了兩個(gè)類,在這兩個(gè)類中可以有同名的函數(shù)。在引用時(shí),為了區(qū)別,應(yīng)該加上類名作為限定:
class A //聲明A類
{ public:
void funl();//聲明A類中的funl函數(shù)
private:
int i; };
void A::funl() //定義A類中的funl函數(shù)
{…………}
class B //聲明B類
{ public:
void funl(); //B類中也有funl函數(shù)
void fun2(); };
void B::funl() //定義B類中的funl函數(shù)
{ …………}
這樣不會(huì)發(fā)生混淆。
在文件中可以定義全局變量(global variable),它的作用域是整個(gè)程序。如果在文件A中定義了一個(gè)變量a int a=3;
在文件B中可以再定義一個(gè)變量a int a=5;
在分別對(duì)文件A和文件B進(jìn)行編譯時(shí)不會(huì)有問題。但是,如果一個(gè)程序包括文件A和文件B,那么在進(jìn)行連接時(shí),會(huì)報(bào)告出錯(cuò),因?yàn)樵谕粋(gè)程序中有兩個(gè)同名的變量,認(rèn)為是對(duì)變量的重復(fù)定義。
可以通過extern聲明同一程序中的兩個(gè)文件中的同名變量是同一個(gè)變量。如果在文件B中有以下聲明:
extem int a;
表示文件B中的變量a是在其他文件中已定義的變量。由于有此聲明,在程序編譯和連接后,文件A的變量a的作用域擴(kuò)展到了文件B。如果在文件B中不再對(duì)a賦值,則在文件B中用以下語句輸出的是文件A中變量a的值: cout<<a; //得到a的值為3