c++고수님들 봐주세요
글쓴이: shtlcks / 작성시간: 화, 2012/11/27 - 3:32오후
#include<iostream> using namespace std; class cal { private:int add; public: void Add(double a,double b); void chance(); void input(); }; void cal::Add(double a, double b){ add++; cout<<a<<"+"<<b<<"="<<a+b<<endl; } void cal ::chance(){ cout<<"더한 횟수"<<endl; cout<<add<<endl; } void cal::input(){ add=0;///// 이부분이요!!!!!!!!!!!!!!!!!!!!!!!! } void main(){ cal x; x.input(); x.Add(3.2,2.4); x.chance(); }
///// 이부분이요!!!!!!!!!!!!!!!!!!!!!!!!이부분이라고 쓴곳 add=0;이라고하면 chance 함수로 가서 결과에 1 나오거든요
근데 int add=0;이라고하면 chance함수의 add값에 쓰레기값 들어가서 쓰레기값이 나오네요..왜이런지 설명좀 해주세요
Forums:
지역변수 문제
void cal::input()
{
add = 0;
}
이라고하는 것은 원래
void cal::input()
{
this.add = 0;
}
이런 의미입니다.
만약 this를 안쓰면 컴파일러가 알아서 this.를 붙여주기때문에 add = 0; 이라고 써도 됩니다.
하지만 int add = 0; 이라고 쓰면 이것은 사용자가 add를 로컬변수로 새로 설정했기때문에
this.add 와는 다른변수를 만든거죠..
그러니까 .. 아래 두개는 다른 add 변수입니다.
void cal::input()
{
int add = 0;
this.add = 0;
}
지역변수
int add = 0;
이라고 하면, 멤버변수의 add를 가리키는게 아니라, 지역변수 add를 만들어서 0으로 설정하고 있는 거임.
즉, 멤버변수 add는 안바뀌었음.