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