문제

질문은 간단합니다 ... 어떤 이유로 this-> yourvariable 또는 yourvariable을 직접 사용하는 데 차이가 있습니까?

나는 그것에 대해 아무런 문제가 없지만, 이것을 많이 사용하고 있으며 더 나아 가기 전에 차이가 있는지 알고 싶습니다.

나는 여기서 게시물에 댓글을 보았고 어떤 스레드를 기억하지 못하지만 그 사람은 키워드 "this"를 사용하는 것에 대해 말한 것을 말했습니다.

개인적으로, 나는 변수보다 직접 사용하는 것이 좋습니다. 코드를 더 쉽고 예쁘게 만듭니다.

도움이 되었습니까?

해결책

아니요, 실제 차이는 없습니다. 단순히 범위 예선입니다. 그러나 방법을 가정하십시오

void SetFoo( Foo foo )
{
    this->foo = foo;
}

여기서이-> foo는 개인 회원입니다. 여기에서 클래스/인스턴스 변수와 동일한 이름의 매개 변수를 가져갈 수 있습니다.

다른 팁

대부분의 경우 차이가 없습니다. 그러나 차이를 만드는 상황이 있습니다.

class foo
{
    int i;
    void bar() {
        int i = 3;
        i; // refers to local i
        this->i; // refers to the member i
    }
};

또한 템플릿을 사용하면 회원 자격을 갖추어야 할 수도 있습니다. this-> 따라서 이름 조회가 지연됩니다.

template<typename T>
struct A
{
    int i;
    T* p;
};

template<typename T>
struct B : A<T>
{
    void foo() {
        int k = this->i; // here this-> is required
    }
};

"2 단계 조회"를 올바르게 수행하는 컴파일러는 "this->"를 제거 할 경우 불만을 제기합니다. "this->"는 그것이 기본 클래스의 회원이라고 말합니다. 기본 클래스는 템플릿 매개 변수에 의존하기 때문에 클래스 템플릿이 인스턴스화 될 때까지 조회가 지연됩니다.

나는 그것을 사용한다는 것을 알았습니다 this 내 코드를 더 읽기 쉽게 만들지 만 이유는 없습니다. 컴파일러가 생성하는 어셈블러 코드를 보면 기능적으로 (그리고 일반적으로) 동일해야합니다.

기본적으로 함수가 호출되면 숨겨진 인수가 전달됩니다. this 그런 다음 어떤 변수가 어디에 있는지 알아내는 데 사용됩니다. 변수를 직접 사용하는 경우 a this->, 당신은 구문 설탕을 사용하는 것 외에는 아무것도하지 않습니다.

이것은 C#에 대해 묻고 대답했습니다. 여기 그리고 나는 대답 (적어도 내)이 동일하다고 생각합니다. 선호합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top