멤버 변수에 대해서 _를 쓰는 것은 C++에서 괜찮은 방법 중의 하나입니다. 예를 들어 아래와 같은 코드가 있다면
setA(int a)
{
this->a = a;
}
아래와 같은 코드로 바뀌는 것이 더 편리합니다.
setA(int a)
{
_a = a;
}
C++의 this는 pointer 형으로 되어 있기 때문에 this->를 치는 상당히 귀찮기 때문에 유익한 습관입니다.
그런데 생각해보면 변수 명이 겹치게 되는 이유가 getter/setter가 큰 이유라는 것을 위의 코드에서 알 수 있습니다. 그렇다면 반대로 getter/setter가 필요하지 않는 경우에는 변수에 _를 붙일 필요가 적어진다는 것을 의미하는 것이기도 합니다. 따라서 멤버변수가 public이면 _가 붙은 변수를 만들 필요가 없습니다.
Anonymous wrote:
_로 시작하는 이름 혹은 __로 시작하는 이름은 구현체를 위해 예약된 이름입니다. 당연히 일반 프로그래머는 그러한 이름을 써서는 안됩니다.
흔히 맴버 변수 혹은 함수나 혹은 매크로 이름, 구조체 태그 이름에 _로 시작하는 이름을 사용하곤 하는데 이름의 충돌 가능성이 있습니다. 제가 추천하는 방법은 앞 대신 뒤에 _를 붙이는 방법입니다.
int VarName_;
익명의 유저가 말씀해주신 말이 일리가 있습니다. 표준에는 _나 __로 시작하는 명칭이 충돌되지 않을 경우에도 자신이 가지고 있는 컴파일러에서는 문제가 될 가능성이 있습니다. 내 컴파일러나 내 컴퓨터에서 잘 된다 OK라고 할 수 도 있겠지만 그것은 우연에 의지하는 프로그래밍입니다. 아래의 형태로 고치는 것이 좋을 것입니다.
보통 멤버 변수를 쓸때 쓰는걸로 알고 있습니다만특별한 이유는 없습
보통 멤버 변수를 쓸때 쓰는걸로 알고 있습니다만
특별한 이유는 없습니다.
MFC에서 m_ 와 비슷합니다.
고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"
_로 시작하는 이름 혹은 __로 시작하는 이름은 구현체를 위해 예약된 이
_로 시작하는 이름 혹은 __로 시작하는 이름은 구현체를 위해 예약된 이름입니다. 당연히 일반 프로그래머는 그러한 이름을 써서는 안됩니다.
흔히 맴버 변수 혹은 함수나 혹은 매크로 이름, 구조체 태그 이름에 _로 시작하는 이름을 사용하곤 하는데 이름의 충돌 가능성이 있습니다. 제가 추천하는 방법은 앞 대신 뒤에 _를 붙이는 방법입니다.
int VarName_;
보통...
private 로 되어 있을때 사용하지 않나요? public 과 구분하기 위해...
제 주변에만 그렇게 쓰는 사람들이 많은건가 --;
[quote]제 주변에만 그렇게 쓰는 사람들이 많은건가 --;[/quot
바람직하지 않은 습관입니다. 고치십시오.
멤버 변수에 대해서 _를 쓰는 것은 C++에서 괜찮은 방법 중의 하나입니
멤버 변수에 대해서 _를 쓰는 것은 C++에서 괜찮은 방법 중의 하나입니다. 예를 들어 아래와 같은 코드가 있다면
아래와 같은 코드로 바뀌는 것이 더 편리합니다.
C++의 this는 pointer 형으로 되어 있기 때문에 this->를 치는 상당히 귀찮기 때문에 유익한 습관입니다.
그런데 생각해보면 변수 명이 겹치게 되는 이유가 getter/setter가 큰 이유라는 것을 위의 코드에서 알 수 있습니다. 그렇다면 반대로 getter/setter가 필요하지 않는 경우에는 변수에 _를 붙일 필요가 적어진다는 것을 의미하는 것이기도 합니다. 따라서 멤버변수가 public이면 _가 붙은 변수를 만들 필요가 없습니다.
익명의 유저가 말씀해주신 말이 일리가 있습니다. 표준에는 _나 __로 시작하는 명칭이 충돌되지 않을 경우에도 자신이 가지고 있는 컴파일러에서는 문제가 될 가능성이 있습니다. 내 컴파일러나 내 컴퓨터에서 잘 된다 OK라고 할 수 도 있겠지만 그것은 우연에 의지하는 프로그래밍입니다. 아래의 형태로 고치는 것이 좋을 것입니다.
- 죠커's blog / HanIRC:#CN
댓글 달기