2017-01-05 7 views
0

클래스 메서드는 const으로 정규화 될 수 있으며,있는 경우 클래스 메서드는 호출 된 인스턴스를 변경하지 못하도록합니다 (mutable 무시). 멤버 함수가 독립적으로 동작하는 것처럼 생각할 수 있지만 const 메서드의 경우 const MyClass*이고 그렇지 않은 경우 ptr 인 첫 번째 매개 변수로 this 포인터를 얻는 것처럼 생각할 수 있습니다.멤버 함수 한정자 (const 제외)의 의미는 무엇입니까?

나는 최근에이 멤버 함수 (참조, 예를 들어 this question 사이트에)에 실제로 추가 할 수 한정자, 그래서 예선이라는 것을 인식하게했습니다

  • const 또는 const가 아닌
  • volatile 비 volatie
  • 참조되지 않은 일정한 기준 (&) r- 수치 또는 참조 (&&)

volatile, 나는 그것이 변수에 대해 무엇을 의미하는지 알고 있습니다. 레지스터 또는 어쩌면 일부 비 응집성 캐시에 있음) 다른 코드가 원래 위치를 변경하는 것처럼 유효 할 것으로 기대하십시오. 이것은 const 수정 자와 같이 "this 포인터 은유"에 매우 명확하게 적용되지 않습니다. 포인터이기 때문에 다른 사람이 지적 데이터를 변경할 수 있습니다. a __restrict__ qualifier on this 같은 것을 더 잘 이해할 수 있습니다. 그래서, volatile 내가 그것을 추측하고 있거나 내가 잘못 해석하고있는 것은 무엇입니까?

이제 회원들을위한 참조 한정자에 관해서 - 나는 우둔합니다. 그게 무슨 뜻일까요? 무엇에 대한 참조일까요? 나는 그것을 얻지 않는다.

+2

구성원 함수에 대한 참조 한정자는 [here] (http://stackoverflow.com/a/8610728/1460794)를 참조하십시오. – wally

+0

이 질문은 약간 넓습니다. 서로 다른 한정어에 대해 별도의 질문을 게시하는 것이 좋습니다. – wally

+0

@Muscampester : 나는 실제로 우리를 위해 모든 것을 바로 잡는 하나의 설명이 있기를 바랬습니다. – einpoklum

답변

0

"volatile"키워드는 특정 변수를 처리하기 위해 생성 된 어셈블러 명령어를 최적화하기 위해 일반적으로 수행 할 수있는 가정을 제한하기 위해 컴파일러에 효과적으로 알립니다.

참조 한정자는 호출 된 객체 따라서 (& & 용) 좌변 (&위한) 기준 또는 기준 r- 수치 인 경우이 방법에만 호출하기 위해 사용된다. 이것은 객체의 lvalueness/rvalueness에 기반하여 메소드의 동작을 변경하려는 경우에 유용합니다 (예 : 일반적으로 rvalues가 일시적인 임시 변수 임).

+0

'휘발성 '설명 - 죄송 합니다만, 너무 막연합니다. – einpoklum