雙冒號 :: 操作符被稱為域操作符(scope operator),含義和用法如下:
1.在類外部聲明成員函數。void Point::Area(){};
2.調用全局函數;表示引用成員函數變量及作用域,作用域成員運算符 例:System::Math::Sqrt() 相當於System.Math.Sqrt()。
3.調用類的靜態方法: 如:CDisplay::display()。 把域看作是一個可視窗口全局域的對象在它被定義的整個文件里,一直到文件末尾都是可見的。在一個函數內被定義的對象是局域的(local scope), 它只在定義其的函數體內可見。每個類維持一個域,在這個域之外 ,它的成員是不可見的。類域操作符告訴編譯器后面的標識符可在該類的范圍內被找到。
1、 作用域符號 :: 的前面一般是類名稱,后面一般是該類的成員名稱,C++為例避免不同的類有名稱相同的成員而采用作用域的方式進行區分
如:A,B表示兩個類,在A,B中都有成員member。那么 A::member就表示類A中的成員member B::member就表示類B中的成員member
2、 全局作用域符號:當全局變量在局部函數中與其中某個變量重名,那么就可以用 :: 來區分如:
char zhou; //全局變量
void sleep()
{
char zhou; //局部變量
char(局部變量) = char(局部變量) *char(局部變量) ;
::char(全局變量) =::char(全局變量) *char(局部變量);
}
3、 :: 是C++里的“作用域分解運算符”。
比如聲明了一個類A,類A里聲明了一個成員函數voidf(),但沒有在類的聲明里給出f的定義,那么在類外定義f時,就要寫成voidA::f(),表示這個f()函數是類A的成員函數。例如
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
class
CA {
public
:
int
ca_var;
int
add(
int
a,
int
b);
int
add(
int
a);
};
//那么在實現這個函數時,必須這樣書寫:
int
CA::add(
int
a,
int
b)
{
return
a + b;
}
//另外,雙冒號也常常用於在類變量內部作為當前類實例的元素進行表示,比如:
int
CA::add(
int
a)
{
return
a + ::ca_var;
}
//表示當前類實例中的變量ca_var。
|