2012-03-02 4 views
1

Я хотел бы, чтобы кто-то объяснил мне синтаксис «имя и имя» и как он используется при программировании на С ++. Я просматривал, но пока не понял. Спасибо за помощь.Что означает «name :: name» в C++?

Вот контекст код:

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

без какого-либо контекста это звучит как конструктор ... но если вы хотите полезный ответ, который я предлагаю вам добавить больше контекста к вашему вопросу. – FatalError

+0

Я только что отредактировал ответ и добавил код – unshakeable

+0

Кто сожгли вашу книгу? –

ответ

10

:: оператор разрешения области видимости.

std::cout это имя cout в пространстве имен std.

std::vector::push_back - метод push_back для std :: vector.

В вашем примере кода:

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

UsbProSender::SendMessageHeader обеспечивает определение для SendMessageHeader метода в UsbProSender класса.

Другой (более полный) пример:

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

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

спасибо за указание имени оператора, который очень помогает мне в качестве примеров синтаксиса – unshakeable

+0

Хороший ответ. UsbProSender может быть либо классом, либо пространством имен, верно? Вы не можете сказать на примере, который он дал. –

+3

Функция const, поэтому она должна быть членом. – SoapBox

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; 
} 
Смежные вопросы