소개
게시글
질문&답변
2020.10.25
클래스에서 생성자가 아직 이해가 잘 안되네요ㅠㅠㅠ
Simple(int id) { setID(id); } void setID(int id) { m_id = id; } main() { Simple sp2(2); } 1. 생성자 개념 생성자는 객체(instance)가 생성될 때 호출되는 클래스의 특별한 함수입니다. 프로그래머가 생성자 함수를 만들지 않았을때도 클래스 내부적으로 숨겨진 '기본 생성자 함수'가 호출이 됩니다. 이처럼 어쨋건 저쨋건 생성자 함수는 클래스의 객체가 생성될 때 무조건 호출이 된다면, 초기화 작업에 유용하게 사용이 가능할 것 같습니다. 근데 무엇을 초기화 해야할까요? 객체가 생성될때 호출되는 녀석이니까 객체를 초기화할 때 쓰면 유용하지 않을까요? 이번 강의에서 클래스를 처음 접하는 분들에게 오해가 생길 수 있는 부분은, 생성자는 객체를 초기화를 해주는 함수가 아닙니다. '객체 생성했네? 그럼 내가 나서야지!' 하고 객체가 생성되면 맨 처음으로 발벗고 나서는 녀석일 뿐 입니다. 그런 성질을 이용하여 '그럼 생성자를 객체 초기화 하는데 쓰면 유용하겠다~' 하고 판단하여 생성자 함수를 초기화 작업에 유용하게 이용하는것 뿐 입니다. 생성자는 무조건 초기화 하는데 쓰인다! 보다는 '생성자는 객체가 생성되면 맨 처음 발벗고 나서는 애' 라고 개념을 익히시면 좋을 것 같습니다. '음.. set 함수도 있고, 딱히 생성자 같은거 필요 없어보이는데?' 하고 private 로 생성자의 활동범위를 클래스 내부로 줄여버리면, main에서 객체 생성이 되질 않습니다. 이러나 저러나 발벗고 나서는꼴을 보면 쟤가 왜저러나 싶지만, 객체를 만들어 사용하고 싶다면 꼭 필요한 생성자 입니다. 생성자를 사랑해줍시다. 2. 코드분석 예제의 Simple 의 생성자를 함께 차근차근 뜯어봅시다 먼저 main 에서 Simple 타입의 s2 이라는 객체를 만들었고, 인자값으로 정수 2을 넣고 있습니다. (s1은 1을 넣어주고 있어서 헷갈릴 것 같아 s2 를 예로 들어보겠습니다.) 객체가 생성되면 제일 먼저 호출되는 함수가 생성자고, Simple 타입의 객체 s2 를 만들었으니 정수 2 를 들고 Simple 생성자 함수로 가봅시다. Simple생성자는 인자로 정수 하나를 받으면 setID 함수를 호출을 하는데, 받은 정수를 그대로 보내주고 있습니다. 난 정수 2를 들고왔으니 2를 들고 setID 함수로 다시 가봅시다. setID에서는 정수 하나를 멤버변수 m_id에 값을 대입해 초기화 하고 있습니다. 최종적으로 m_id 를 2 로 초기화 하고 있는 모습이 됩니다.
- 1
- 3
- 549
질문&답변
2020.10.19
6.3 배열과 반복문
안녕하세요! 배열의 몇번째 강의인지는 기억은 안나는데요, 집은 5개를 빌렸는데 실수로 6번째 집에 침입 했을때에, 만약 6번째 집이 아무도 살지 않고 비어있다면 (메모리가 비어있다면) 딱히 큰 문제 없이 일단 값을 출력한다고 말씀하신 부분이 있던것 같아요! 그래서 런타임 에러가 발생하지 않고 그냥 쓰레기값을 '일단' 그냥 뱉어내는 것이 아닌가 싶습니다. 이런 이유로 만약 코딩하다 배열을 만나면 꼭 정신차리고 집중해서 봐야한다고, 인덱스의 개수와 크기를 꼭 헷갈리지 말라고 홍정모 선생님이 알려주셨던 기억이 있어요. 💻🤔💦
- 1
- 4
- 256
질문&답변
2020.10.18
0은 signed 인가요? unsigned 인가요?
감사합니다 찾아보겠습니다!
- 0
- 3
- 1.4K
질문&답변
2020.10.17
main()에서 Person을 이용하여 구조체타입 변수 생성시 메모리와 관련하여 궁금한 것
감사합니다! 참고하겠습니다!
- 2
- 2
- 479
질문&답변
2020.10.15
local 지역변수와 static 정적변수의 메모리에 대한 질문
답변 감사합니다! 재밌게 수업 듣고 있습니다! (++추가) 강의 12:54 부분부터. 컴파일러가 최적화를 시켜주기 때문에 같은 주소를 갖게 됩니다. 함수안의 int a 지역변수가 함수 해제될때 같이 해제되었다가 함수가 다시 호출되면서 int a 변수가 새로운 메모리가 생겨도 같은 메모리 주소를 가지고 있게 되는데 이는 컴파일러가 최적화를 도와주는 것입니다
- 3
- 2
- 421