Notice
Recent Posts
Recent Comments
코드 위의 하루 (A Day on the Code)
💻 C++ 기말고사 총정리 | 객체지향과 연산자의 세계로 본문
이번 포스트에서는 명품 C++ Programming 교재 기준으로 C++ 기말고사 시험 범위를 하나로 정리해봅니다.
중심 개념, 자주 헷갈리는 포인트, 그리고 직접 실습해보며 느꼈던 깨달음도 함께 정리했어요.
✅ 5장. 함수와 참조, 복사 생성자
📌 함수 인자 전달 방식
- 값에 의한 전달: 원본 값 변화 없음. 복사본 생성.
- 참조에 의한 전달: 함수 내에서 원본 값 변경 가능. 주소 공유.
void modify(int& a) { a += 10; } // 참조 전달
📌 참조 리턴
- 함수가 반환한 참조로 왼쪽값 할당 가능
int& getRef(int& a) { return a; }
getRef(x) = 20; // x의 값이 20으로 변경됨
📌 복사 생성자
- 객체가 자기 자신의 복사본을 만들 때 호출
- 기본 생성자 + 대입 연산자와 다름
class MyClass {
int x;
public:
MyClass(int x) { this->x = x; }
MyClass(const MyClass& obj) { x = obj.x; } // 복사 생성자
};
✅ 6장. 함수 중복과 static 멤버
📌 함수 중복 (Overloading)
- 함수 이름은 같지만 매개변수 다르면 OK
- 주의: 리턴형만 다른 건 X
void print(int a);
void print(double a); // OK
📌 디폴트 매개변수
- 우측부터 순차적으로 생략 가능
- 중복함수와 혼용 시 주의!
void greet(string name = "시연");
📌 static 멤버
- 공통 변수 / 함수. 모든 객체가 공유
- 클래스명으로 접근 가능 (ClassName::staticVar)
class Count {
static int cnt;
public:
static void show() { cout << cnt; }
};
✅ 7장. 프렌드와 연산자 중복
📌 friend 키워드
- 클래스 외부 함수가 비공개 멤버에 접근 가능하게 해줌
class My {
int secret;
friend void accessSecret(My m); // 프렌드 선언
};
📌 연산자 중복
- 연산자 기능을 객체끼리 사용 가능하게 구현
class Point {
int x;
public:
Point operator+(Point p) {
return Point(x + p.x);
}
};
📍 이항 연산자
- 객체 + 객체, 객체 - 객체 등의 구현
- operator+ 처럼 정의
📍 단항 연산자
- -객체, ++객체 등의 구현
- 리턴형과 사용법 주의
📍 << 연산자 중복
- 보통 friend 함수로 구현
friend ostream& operator<<(ostream& os, const Point& p);
🔍 시험에 자주 나오는 포인트 정리
항목 | 기억 포인트 |
참조 리턴 | 왼쪽값 할당 가능, 객체 반환 활용 |
복사 생성자 | const & 형식 매개변수, 얕은 복사 vs 깊은 복사 구별 |
함수 중복 | 인자 자료형/개수로 구별, 리턴형만 다르면 오류 |
static 멤버 | 공용 메모리 사용, 객체 없이도 호출 가능 |
friend 함수 | 외부 함수가 private 접근 가능 |
연산자 중복 | operator+, operator<< 형식 암기, 객체 간 연산 구현 |
📘 마무리
이번 기말고사를 준비하며
단순한 문법 암기보다 ‘왜 이렇게 동작하는지’를 이해하는 게 더 중요하다는 걸 느꼈어요.
특히 복사 생성자, 참조 리턴, 연산자 중복 구현은 실전 프로젝트에서도 매우 유용하니 꼭 짚고 넘어가세요!
'🍚전공이 밥 먹여준다믄 > 📘 C++' 카테고리의 다른 글
제어문 & 입출력 총정리 (0) | 2025.05.12 |
---|---|
참조, 함수 인자 전달, 깊은 복사의 비밀 (0) | 2025.05.12 |
포인터와 배열의 지옥에서 살아남기 (0) | 2025.05.12 |
C++ 중간고사 총정리 - 객체지향의 시작, 클래스와 생성자 (0) | 2025.05.12 |