2012-03-02 229 views
1

我希望有人向我解釋「name :: name」語法以及它如何在C++編程中使用。我一直在尋找,但我還沒有得到它。感謝幫助。在C++中,「name :: name」是什麼意思?

這裏是上下文代碼:

void UsbProSender::SendMessageHeader(byte label, int size) const { 
    Serial.write(0x7E); 
    Serial.write(label); 
    Serial.write(size); 
    Serial.write(size >> 8); 
} 
+6

沒有它聽起來像一個構造函數任何情況......但是,如果你想有一個有用的答案,我建議你加入更多內容,你的問題。 – FatalError 2012-03-02 00:58:46

+0

我剛剛編輯了答案並添加了代碼 – unshakeable 2012-03-02 01:10:43

+0

誰燒了你的書? – 2012-03-02 02:01:17

回答

10

::是範圍解析操作。

std::cout是命名空間std中的名稱cout

std::vector::push_back是std :: vector的push_back方法。

在您的代碼例如:

void UsbProSender::SendMessageHeader(byte label, int size) const { 
    Serial.write(0x7E); 
    Serial.write(label); 
    Serial.write(size); 
    Serial.write(size >> 8); 
} 

UsbProSender::SendMessageHeader針對UsbProSender類的SendMessageHeader方法提供的定義。

另一(更完整的)例如:

class Bar { 
    int foo(int i); // forward declaration 
}; 

// the definition 
int Bar::foo(int i) { 
    return i; 
} 
+0

感謝給予了幫助我很多的操作員的名字作爲語法示例 – unshakeable 2012-03-02 01:17:49

+0

好的答案。 UsbProSender可以是一個類或命名空間,對嗎?你無法從他給出的例子中看出來。 – 2012-03-02 01:22:55

+3

該函數是const的,所以它必須是一個成員。 – SoapBox 2012-03-02 01:24:11

2

它是範圍解析操作符。 考慮到代碼

class A { public: void f(){} }; 
class B { public: void f(){} }; 
class C : public A, public B {}; 

int main(int argc, char *argv[]) 
{ 
    C c; 
    // c.f(); // ambiguous: which one of two f() is called? 
    c.A::f(); // OK 
    c.B::f(); // OK 
    return 0; 
} 
相關問題