코드 위의 하루 (A Day on the Code)

💻 C++ 기말고사 총정리 | 객체지향과 연산자의 세계로 본문

🍚전공이 밥 먹여준다믄/📘 C++

💻 C++ 기말고사 총정리 | 객체지향과 연산자의 세계로

code.with.siyeon 2025. 6. 28. 19:34

이번 포스트에서는 명품 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<< 형식 암기, 객체 간 연산 구현
 

📘 마무리

이번 기말고사를 준비하며
단순한 문법 암기보다 ‘왜 이렇게 동작하는지’를 이해하는 게 더 중요하다는 걸 느꼈어요.
특히 복사 생성자, 참조 리턴, 연산자 중복 구현은 실전 프로젝트에서도 매우 유용하니 꼭 짚고 넘어가세요!