this 포인터 예제

멤버 함수가 const 한정자로 선언된 경우 클래스 A에 대한 해당 멤버 함수에 대한 이 포인터의 형식은 const A* const입니다. 이 경우 생성자 3에 표시된 것처럼 `this` 포인터를 사용하여 로컬 변수 및 클래스 데이터 멤버를 구분합니다. 따라서 이 포인터는 멤버 함수 내에서만 액세스할 수 있으며 이 멤버 함수가 호출된 개체의 주소를 가리킵니다. const 이 포인터는 const 멤버 함수에서만 사용할 수 있습니다. 클래스의 데이터 멤버는 해당 함수 내에서 일정합니다. 함수는 여전히 값을 변경할 수 있지만 const_cast가 필요합니다. 1. 각 개체는 데이터 멤버의 자체 복사본을 가져옵니다. 2. 모두 코드 세그먼트에 있는 것과 동일한 함수 정의에 액세스합니다. 각 개체는 데이터 멤버의 고유한 복사본을 얻고 모든 개체는 멤버 함수의 단일 복사본을 공유합니다. 그렇다면 이제 질문은 각 멤버 함수의 복사본이 하나만 존재하고 여러 개체에서 사용되는 경우 적절한 데이터 멤버에 액세스하고 업데이트하는 방법은 무엇입니까? 컴파일러는 함수 이름과 함께 암시적 포인터를 `this`로 제공합니다.

`this` 포인터는 모든 비정적 멤버 함수 호출에 숨겨진 인수로 전달되며 모든 비정적 함수의 본문 내에서 로컬 변수로 사용할 수 있습니다. `this` 포인터는 현재 개체의 메모리 주소를 보유 하는 상수 포인터입니다. 정적 멤버 함수는 클래스 이름 없이 호출할 수 있기 때문에 정적 멤버 함수에서는 `this` 포인터를 사용할 수 없습니다. 클래스 X의 경우 이 포인터의 유형은 `X* const`입니다. 또한 X의 멤버 함수가 const로 선언된 경우 이 포인터의 유형은 `const X *const`(이 GFact 참조) 빠른 대답은 `예`입니다. 우리는 생성자에서이 포인터를 사용할 때 개체가 아직 완전히 형성되지 않았다고 생각하기 때문에이 질문을하고 있습니다. 그러나 충분히 주의해야 하는 경우 생성자({body} 및 초기화 목록에서도)에서 이 것을 사용할 수 있습니다. C++가 함수에 새 매개 변수를 추가했습니다. 추가된 매개 변수는 클래스 함수가 작업하는 클래스 개체에 대한 포인터입니다.

항상 이 이름이 붙여지습니다. 이 포인터는 클래스 개체를 가리키는 모든 클래스 멤버 함수 내에 숨겨진 포인터입니다.

Posted in Uncategorized