2013-06-01 134 views
-2

我發現PARSEC基準測試套件一個C++文件,看到一些像這樣的功能:C++語言中`::`是做什麼的?

long Rng::rand() 
{ 
    return _rng->randInt(); 
} 

是什麼在函數的名稱::在這裏做?

+4

這不是C,而是C++ –

+1

這確實看起來像C++方法定義而不是C函數。你確定它是C代碼而不是C++嗎? – yzt

+2

我非常想回滾編輯[devnull](http://stackoverflow.com/users/2235132/devnull)和[蘭迪霍華德](http://stackoverflow.com/users/2159730/randy-howard ),因爲他們完全重寫了這個問題。原來的問題是關於C中的'::'它已被修改,以便C不再是標籤或在問題中提到,這使得我的答案不重要(因爲它解決了原始C問題而不是修訂的C++問題)。當他們保持原始問題的意圖時,編輯就很好。當他們沒有時,他們不是。 –

回答

10

在C++ ::Scope resolution operator
在這種情況下,它告訴編譯器它是rand()方法的定義,它是Rng class/structure/union/namespace的成員函數。

+0

鑑於'C'沒有'class'es,你能澄清一下你的聲明是從「在這種情況下......」開始的嗎? – Shredderroy

+3

@Shredderroy:Q被標記爲C++。 –

+0

+1,但'Rng'也可以是一個名稱空間。 – juanchopanza

10

在C中,::是一個語法錯誤,除非它發生在註釋,字符文字或字符串文字中。

::只能出現在C++代碼中。

+0

'::'怎麼能出現在*字符*裏面?我錯過了什麼嗎? – yzt

+5

@yzt像這樣:''::'' – 2013-06-01 07:15:13

+0

@ H2CO3這不是一個語法錯誤?單引號內的兩個字符? – yzt