C++ 공부를 하다가 모르는 게 있어 글 남겨봅니다.
Node라는 class는 val값을 받아 멤버변수 val에 집어 넣는 생성자를 갖고 있습니다.
여기서 궁금한 점은 main 함수에서 13번째 줄과 14번째 줄에서 각각 100.1과 200.2를 인자로해서 insertNode함수를 호출 할 때,
13번째 문장을 실행하면
Node newNode(100.1) 이라는 문장을 통해 새로운 객체가 생성될 테고,
14번째 문장을 실행하면
Node newNode(200.2)로 새로운 객체가 또 생성될 것인데
4번째 문장에 newNode의 주소를 출력하도록 하는 문장을 넣고
13번째 문장과 14번째 문장을 실행하도록 했더니 두 개가 같은 주소가 출력 됐습니다.
각각 다른 객체여서 다른 주소값을 가리켜야 되는 것 같은데.. 왜 이런 거죠,,?
또 16번째 문장부터는 다른 질문인데
'&'는 변수의 주소값을 반환하는 것으로 알고있습니다.
포인터 변수 b를 선언하고
18번째 문장에서 b의 주솟값을 출력하고 &b도 출력해봤더니 다른 b와 &b가 다른 주소를 가리키고 있는데
왜 이런건지 잘 모르겠습니다..
답변 감사하겠습니다!
좋은 하루 되세요!
1. 객체 newNode는 스택 메모리에 존재합니다. 따라서 함수 반환시 destruct되고 다음 호출시 정확히 같은 자리에 새로운 newNode가 생성될 수 있습니다.
2. b도 하나의 변수고 자신만의 주소를 갖고 있습니다. 다만 a의 주소를 일시적으로 저장하고 있을 뿐입니다.
댓글을 작성하려면 로그인해야 합니다.
uknow226 1년 전
C++ 공부를 하다가 모르는 게 있어 글 남겨봅니다.
Node라는 class는 val값을 받아 멤버변수 val에 집어 넣는 생성자를 갖고 있습니다.
여기서 궁금한 점은 main 함수에서 13번째 줄과 14번째 줄에서 각각 100.1과 200.2를 인자로해서 insertNode함수를 호출 할 때,
13번째 문장을 실행하면
Node newNode(100.1) 이라는 문장을 통해 새로운 객체가 생성될 테고,
14번째 문장을 실행하면
Node newNode(200.2)로 새로운 객체가 또 생성될 것인데
4번째 문장에 newNode의 주소를 출력하도록 하는 문장을 넣고
13번째 문장과 14번째 문장을 실행하도록 했더니 두 개가 같은 주소가 출력 됐습니다.
각각 다른 객체여서 다른 주소값을 가리켜야 되는 것 같은데.. 왜 이런 거죠,,?
또 16번째 문장부터는 다른 질문인데
'&'는 변수의 주소값을 반환하는 것으로 알고있습니다.
포인터 변수 b를 선언하고
18번째 문장에서 b의 주솟값을 출력하고 &b도 출력해봤더니 다른 b와 &b가 다른 주소를 가리키고 있는데
왜 이런건지 잘 모르겠습니다..
답변 감사하겠습니다!
좋은 하루 되세요!