나는 코드를 쓰고 있어요 그리고 난 참조 &에 대한 질문이 :이 경우C++ 참조 및 메모리
class A{
private:
int num;
public:
void set(const int& a){num = a;}
void foo(){
int a = 4;
set(a);
}
void print(){
cout << num << endl;
}
};
int main(){
A a;
a.foo();
a.print();
return 0;
}
변수 a
가 foo()
의 말에 파괴됩니다. set
을 참조하십시오. 따라서 주소는 a
이고 업데이트는 num
입니다. 따라서이 코드가 잘못 되었습니까 (num은 삭제 된 메모리를 나타냅니다)? 아니면 set
, 값이 (주소가 아님)으로 num을 설정하고?
나는 a
및 num
의 주소의 cout
와 코드를 편집하고 서로 다른, 그래서 내 생각 NUM 복사 값 a
의. 코드를 실행하면 모두 작동하는 것처럼 보이지만 확실하지 않습니다.
'num = a;'는 복사본을 취합니다. 특별한 것은 없습니다. _ "num은 삭제 된 메모리를 가리 킵니다."_ num은 메모리를 가리키지 않으며 일반 클래스 멤버 변수입니다. –
그 주소의 복사본이 아닙니다. – linofex
_ "주소가 아니라 a의 값인 사본입니다."_ 물론입니다. –