c++ 11주차 예습과제

2024. 11. 12. 09:04C++프로그래밍/예습과제

반응형

1. 강의 주제
C++에서의 함수 중첩과 디폴트 인자

2. 강의 키워드
const, 포인터, 참조 연산자, 다형성, 연산자, 오버로함수 중첩

3. 주요 내용 요약
○ const 변수
- 변수에 const라는 키워드를 사용하여 상수(constant)의 의미를 갖게하여 그 내용을 변경 할 수 없게 한다.

○ 함수에 사용하는 const
- 함수 선언 시 함수, 매개변수, 리턴형에 const를 선언하여, 이들이 읽기 전용(read only) 임을 나타낸다.

○ const 맴버
- const 형 맴버 함수는 해당 맴버변수를 변경하는 치환 연산을 수행 할 수 없다.
- const로 지정된 함수에서는 맴버 변수의 값을 변경 할 수 없다.
- const함수는 const 함수만 호출 할 수 있으며 일반 맴버 함수에는 접근  x
- 생성자와 소멸자에서는 const를 사용 x

○  포인터
- 포인터는 c/c++언어를 다른 언어와 차별화 시키는 가장 큰 특징
- 포인터를 이용하게 되면 기계어나 어셈블리 언어처럼 메모리의 주소르 이용해 메모리의 내용을 직접 접근할 수 있음
포인터가 사용되는 경우
  1. call by regerenc로 함수로부터 한 개 이상의 값을 리턴할 때
  2. 함수들 간에 배열이나 문자열을 전달할 때
  3. 배열 조작을 쉽게 할 때
  4. 연결 리스트나 이진 트리 등 복잡한 자료 구조를 만들 때
  5. 메모리를 동적으로 할당할 때

○ 참조 연산자 *
- 포인터에 주소를 대입하는 방법
int x = 10 // 일반 변수  x의 선언 과 초기화
pc=&x; // 포인터 px에 변수 x의 주소 대입
- 포인터는 일반적으로 일반 변수명 앞에 주소 연산자(&)를 사용해 해당 변수의 주소를 저장
- 포인터 px에는 변수 x의 주소가 들어 있음
- 포인터 앞에 *를 찍어주면 되는데 이것이 참조 연산자
- 곱하기 연산자와 모양을 같지만 우선 순위가 높음

○ 지역 변수와 전역 변수의 특징
- 지역변수
  자신의 지역({})내에서만 유효하다.
  함수가 반환되면 지역 변수는 사라진다
- 전역 변수
  프로그램이 끝날 때 까지 값을 유지한다
  프로그램의 모든 부분에서 접근 가능하다
  이해라기 어렵고 유지보수 어렵다

○ 동적 메모리를 사용하는 이유
- 지역 변수는 자신의 지역({})내에서만 유효한데, 전역 변수처럼 프로그램이 끝날 때 까지 값을 유지 하고 싶은 경우
- 프로그램 작성 시 (컴파일 시)는 필요한 메모리 공간의 크기를 모르겠고,
    프로그램을 실행할 때(runtime)메모리의 양을 결정해야하는 경우
- 동적메모리의 단점
  1. 스택보다 느리다.
  2, 동적으로 확보된 기억공간은 기억공간에 이름이 없기 때문에 주소를 사용하므로 포인터에 대한 이해가 필요하다.

○ 정적 vs 동적 메모리 할당
- 정적 메모리 할당
  컴파일시 필요한 메모리 할당
  사용하지 않는 메모리까지 충분히 잡아 낭비
너무 큰 메모리는 할당 불가
- 동적 메모리 할당
  실행시 필요한 메모리 할당
  필요한 만큼만 잡음
  메모리의 주소를 사용(포인터 이용) 하여 접근

4. 감상평
C++의 const와 포인터 개념이 좀 복잡하다. 그래도 동적 메모리 할당이 왜 필요한지 이해는 되었다. 근데 실제로 써보면 더 어려울 것 같아서 연습이 많이 필요할 것 같다

5. 강의 이해도
const 키워드와 포인터의 기본 개념은 대충 이해했다(70% ).
근데 const 멤버 함수나 동적 메모리 할당을 실제로 어떻게 쓰는지는 아직 잘 모르겠다.
예제 코드를 보면서 연습해봐야 할 것 같다.

출처 : smile 한의 c++ 프로그래밍

'C++프로그래밍 > 예습과제' 카테고리의 다른 글

c++ 13주차 예습과제  (0) 2024.11.26
c++ 12주차 예습과제  (1) 2024.11.19
c++ 10주차 예습과제  (4) 2024.11.05
c++ 9주차 예습 과제  (0) 2024.10.29
c++ 7주차 예습 과제  (0) 2024.10.15