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

C++ 중간고사 총정리 - 객체지향의 시작, 클래스와 생성자 본문

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

C++ 중간고사 총정리 - 객체지향의 시작, 클래스와 생성자

code.with.siyeon 2025. 5. 12. 17:47

📌 과목 개요

  • 과목명: C++ 프로그래밍
  • 교재: 『명품 C++ Programming』 - 황기태 저
  • 중간고사 범위: Chapter 1 ~ Chapter 4
  • 시험 스타일: 개념 설명 + 코드 해석 + 출력 결과 예측

📚 핵심 개념 정리

1. 클래스와 객체 (Chapter 3)

  • 클래스: 객체를 만들기 위한 설계도
  • 객체: 클래스를 기반으로 생성된 실체 (인스턴스)
  • 접근 지정자: public, private, protected
class Car {
public:
    int speed;
    void run() {
        cout << "달립니다." << endl;
    }
};
 
2. 생성자와 소멸자
  • 생성자(Constructor): 객체가 생성될 때 자동 호출됨. 반환형 없음.
  • 소멸자(Destructor): 객체가 소멸될 때 호출됨. ~클래스이름() 형식
class Car {
public:
    Car() { cout << "Car 생성됨"; }
    ~Car() { cout << "Car 소멸됨"; }
};
 
3. 인라인 함수
  • 짧은 함수에 사용되며, 컴파일 시 함수 호출 대신 코드 자체를 삽입
  • 성능을 높일 수 있음
inline int square(int x) { return x * x; }
 
4. 동적 메모리 할당 (new, delete)
  • 동적으로 메모리를 확보하고 해제할 수 있음
  • 사용 후 반드시 delete로 메모리 해제 필요
 
int* p = new int;
*p = 10;
delete p;

💡 자주 나오는 문제 유형

  • cout 출력 결과 예측
  • 생성자/소멸자 호출 순서 문제
  • 포인터, new/delete 해석
  • 접근 지정자 오류 유무 판단

🎯 교수님이 강조한 포인트

  • 클래스 선언과 구현 구분
  • 생성자 오버로딩 가능 / 소멸자는 불가능
  • 포인터 관련 메모리 해석

📌 내 오답노트 & 복습 포인트

  • delete 없이 종료 → 메모리 누수 발생!
  • private 멤버를 객체 외부에서 접근하면 컴파일 에러
  • 생성자에 void 붙이면 안 됨 (예: void Car() {} ❌)

📝 마무리 요약

  • C++의 핵심은 객체지향: 클래스와 객체를 이해하는 것이 우선
  • 문법보다는 “실제 호출 순서”와 “출력 결과”에 집중
  • 무조건 코드를 써보면서 익히는 것이 중요!

📘 다음 편 예고
《전공이 밥 먹여준다믄 - C++ 중간고사 정리》
포인터와 배열의 지옥에서 살아남기