7분쯤에 질문이있습니다
223
작성한 질문수 34
7분쯤에 선생님이 이런식으로 코딩을 해주셨는데
Mystring hello("Hello");
cout<<(int*)hello.m_data<<endl;
{
MyString copy=hello;
cout<<(int*)copy.m_data<<endl;
}
여기서 output 둘다 006AF320 로 같게 나오는데 m data 가 가지고 있는 값이 같다는건가요 아니면 m data 포인터의 주소값이 같다는 뜻인가요?
답변 1
4
m_data 이 가지고 있는 값이 같다는 뜻입니다. (m_data 는 포인터이므로 얘가 가지고 있는 값이 같다는 뜻으로 말씀드립니다.) cout 은 char * 를 받으면 char * 의 값인 주소값을 출력하지 않고 char * 가 가리키는 내용인 문자열을 출력하도록 설계가 되어있습니다. 그래서 char * 포인터가 가진 주소값 그대로를 출력하기 위하여 (int*) 로 형변환하시고 주소값을 그대로 출력해서 보여주신 경우입니다. 두 주소값(두 m_data 값)이 같으니 copy 객체의 m_data 와 hello 객체의 m_data 가 동일한 메모리를 가리키고 있다는거에요! 이런 현상이 발생하는 이유는 5분 정도에서 설명해주시는데, 질문 주신 7분과 같은 결과가 나올 시점에선 교수님께서 복사생성자를 구현 안하셨기 때문에(주석 처리 해두셨어요) 컴파일러가 만들어준 기본 복사생성자를 호출하게 되는데 얘는 그냥 멤버들을 단순 복사를 하기 때문입니다.! 따라서 copy 의 m_data 가 hello_ 의 m_data 값을 복사받으면서 두 m_data 가 같은 주소, 즉 동일한 메모리 공간을 가리키게 된 상태입니다.
변수가 메모리에 저장되는 것을 알려주는 강의가 어떤강의였죠
1
481
1
메모리 주소 10진수로 출력
1
672
1
클래스 템플릿 특수화에서 boolalpha로 표현된 리턴값에 대해 질문이 있습니다.
1
514
1
여러가지 리턴 타입에 관한 강의가 어떤 걸까요?
1
548
1
메모리 주소에 관한 질분
0
687
1
인터페이스 클래스에서 reportError의 매개변수에 대해 궁금한 것이 있습니다.
0
558
1
형변환 오버로딩에서 const 관련 질문이 있습니다.
0
448
1
Digit 뒤에 reference를 사용하는 이유
0
512
1
4.2 전역 변수, 정적 변수, 내부 연결, 외부 연결
0
325
1
dat파일이...
0
540
1
TODO:대입 연산자 오버로딩에 대한 소스코드입니다.
0
651
1
복사 생성자 관련 질문이 있습니다.
0
455
1
수업 중 궁금한점이 있습니다.
1
392
1
라이브러리자체가 이해가 되지 않습니다.
0
565
1
마지막 예제 질문
0
305
1
증감연산자 위치에 따른 수행 순서 질문입니다.
0
382
1
단항 연산자 오버로딩에서 return 부분에 질문이 있습니다.
1
415
1
friend함수 관련 질문이 있습니다.
0
313
1
operator+ 정의부분에서 궁금한 것이 있습니다.
0
448
1
3분 17초 질문
0
354
1
함수에 값을 대입한다는 개념이 이해가 되지 않습니다.
0
450
1
int getvalue() const에서 const는 왜 뒤에 붙는건가요?
0
453
2
const Something &st에서 const를 빼면 안되나요?
0
304
1
friend함수는 다른 클래스의 멤버함수로 쓸 수 없나요??
1
495
1





