2010-05-24 3 views

답변

19

전자 (점, .)는 개체의 멤버에 액세스하는 데 사용되며 후자 (이중 콜론, ::)는 네임 스페이스 또는 클래스의 멤버에 액세스하는 데 사용됩니다.

다음 설정을 고려하십시오. 이 경우

namespace ns { 
    struct type 
    { 
     int var; 
    }; 
} 

는, 네임 스페이스의 구성원 인 구조를 참조하려면 ::를 사용합니다. 유형이 type 인 변수에 액세스하려면 .을 사용하십시오.

ns::type obj; 
obj.var = 1; 
+0

뭔가를 액세스하기 위해 객체를 사용하는 경우 도트 연산자를 사용해야하며 클래스 이름을 사용하는 경우에는 ::, 맞습니까?를 사용해야합니다. 예를 들면, 괜찮으 시다면! – defiant

+0

@oDx, 맞습니다. 따라서 클래스의 정적 변수 또는 함수가있는 경우 클래스의 이름과 함께 "::"을 사용하여 참조 할 수 있습니다. 반면 멤버 함수 또는 멤버 변수가 있으면 사용할 것이다 "." 그 클래스의 인스턴스의 이름. –

1

당신이 개체 인스턴스에 대한 포인터를 사용하는 경우 사용하여 객체의 멤버에 액세스해야합니다 - "점"대신>

+1

당신은 * * -'p-> m'이'(* p) .m'에 대한 문법적 설탕이 아닙니다. – fredoverflow

2

또 다른 방법은 쿼드 생각합니다 점 '::'은 scope resolution operator.입니다. 동일한 이름을 가진 범위에 두 개 이상의 객체가있는 경우. 명시 적으로 사용할 하나의 선언 : '.'

std::min(item, item2); 

또는

mycustom::min(item, item2); 

도트 연산자를 그것은 요구되지

Myobject myobject; 
myobject.doWork(); 
myobject.count = 0; 
// etc 

개체 인스턴스의 메서드와 속성을 부르지 만, 개체 인스턴스 는 new로 동적으로 생성되는 경우에 사용하는 또 다른 운영자가하는 것입니다, 그것은 화살표 연산자입니다 '->'

Myobject myobject2 = new Myobject(); 
myobject2->doWork(); 
myobject2->count = 1; 
관련 문제