3장. C++의 주요 기본 개념

2025. 2. 11. 22:49·SW개발/C++
반응형

C++는 절차적 프로그래밍을 넘어 객체지향 프로그래밍(OOP)을 지원하는 언어.
이 장에서는 C++의 핵심 개념인 객체(Object), 클래스(Class), 인스턴스(Instance), 생성자(Constructor), 소멸자(Destructor) 등을 살펴보자.


3.1 객체(Object)란?

C++에서 객체(Object)는 데이터(변수)와 해당 데이터를 다룰 수 있는 함수(메서드)를 하나로 묶은 단위입니다.

  • C++의 객체는 클래스(Class)를 기반으로 생성됩니다.
  • 객체 = 변수 + 메서드(함수)
  • 객체를 사용하면 코드를 재사용하고 데이터를 보호할 수 있음 (캡슐화, 상속, 다형성 지원)

📌 객체의 핵심 개념

 

1️⃣ 객체는 현실 세계의 개념을 코드로 표현한 것
2️⃣ 클래스(Class)를 통해 객체를 정의하고 생성
3️⃣ 객체 내부의 데이터를 보호하기 위해 접근제어자를 사용 (private, public 등)

 

📌 객체 예시

  • 자동차 객체 → 속성: 색상, 브랜드, 속도 / 동작: 가속, 감속
  • 학생 객체 → 속성: 이름, 나이, 학번 / 동작: 공부, 출석

3.2 클래스(Class)란?

클래스(Class)는 객체를 만들기 위한 설계도(틀)입니다.
즉, 객체를 생성하기 위한 청사진(템플릿) 역할을 합니다.

 

📌 클래스 선언 예시

#include <iostream>
using namespace std;

// 클래스 선언 (설계도)
class Car {
public:
    string brand;  // 멤버 변수
    int speed;

    void accelerate() {  // 멤버 함수
        speed += 10;
        cout << "현재 속도: " << speed << "km/h" << endl;
    }
};

int main() {
    Car myCar;  // 클래스 기반 객체 생성
    myCar.brand = "BMW";
    myCar.speed = 0;

    cout << "자동차 브랜드: " << myCar.brand << endl;
    myCar.accelerate();  // 객체의 멤버 함수 호출
}

📌 정리

✅ 클래스는 객체를 만들기 위한 설계도
✅ 객체는 클래스를 기반으로 생성됨
✅ 클래스에는 변수(속성)과 함수(동작)가 포함됨


3.3 인스턴스(Instance)란?

인스턴스(Instance)란 클래스를 기반으로 실제로 생성된 객체를 의미합니다.
즉, 클래스는 설계도, 인스턴스는 그 설계도로 만든 실제 객체입니다.

 

📌 인스턴스 생성

Car myCar;  // Car 클래스의 인스턴스 생성
 

📌 클래스와 인스턴스의 차이

개념 설명
클래스(Class) 객체를 만들기 위한 설계도
인스턴스(Instance) 클래스를 기반으로 실제로 생성된 객체

 

📌 클래스와 인스턴스 예제

Car car1;  // 첫 번째 인스턴스
Car car2;  // 두 번째 인스턴스
  • car1과 car2는 서로 다른 객체(인스턴스)이며, 독립적으로 동작함.

3.4 생성자(Constructor)

생성자(Constructor)는 객체가 생성될 때 자동으로 실행되는 함수입니다.

  • 객체의 초기값을 설정하는 역할
  • 클래스 이름과 동일한 함수명
  • 반환 타입 없음 (void도 사용 X)

📌 생성자 예제

#include <iostream>
using namespace std;

class Car {
public:
    string brand;
    int speed;

    // 생성자 정의
    Car(string b, int s) {
        brand = b;
        speed = s;
        cout << "자동차 객체 생성됨: " << brand << " 속도: " << speed << "km/h" << endl;
    }
};

int main() {
    Car car1("BMW", 0);   // 생성자가 자동으로 호출됨
    Car car2("Tesla", 10);
}
 

📌 실행 결과

자동차 객체 생성됨: BMW 속도: 0km/h
자동차 객체 생성됨: Tesla 속도: 10km/h

3.5 소멸자(Destructor)

소멸자(Destructor)는 객체가 소멸될 때 자동으로 실행되는 함수입니다.

  • 객체가 더 이상 필요 없을 때 메모리를 정리하는 역할
  • 클래스 이름 앞에 ~(틸드)를 붙여 사용
  • 반환 타입 없음, 매개변수 없음

📌 소멸자 예제

#include <iostream>
using namespace std;

class Car {
public:
    string brand;

    // 생성자
    Car(string b) { brand = b; }

    // 소멸자
    ~Car() {
        cout << brand << " 객체 소멸됨!" << endl;
    }
};

int main() {
    Car car1("BMW");
    Car car2("Tesla");
    return 0;  // 프로그램 종료 시 소멸자 자동 호출
}
 

📌 실행 결과

BMW 객체 소멸됨!
Tesla 객체 소멸됨!

3.6 접근 지정자 (Access Specifier)

C++에서는 클래스 내부 변수(멤버 변수)와 함수(멤버 함수)의 접근 범위를 설정할 수 있습니다.
이를 접근 지정자(Access Specifier)라고 합니다.

 

📌 접근 지정자 종류

접근 지정자 설명
public 모든 곳에서 접근 가능
private 클래스 내부에서만 접근 가능 (외부 접근 불가)
protected 클래스 내부 및 상속받은 클래스에서만 접근 가능

 

📌 접근 지정자 예제

#include <iostream>
using namespace std;

class Car {
private:
    string brand;  // private 멤버 변수

public:
    void setBrand(string b) {  // public 멤버 함수
        brand = b;
    }

    void getBrand() {
        cout << "자동차 브랜드: " << brand << endl;
    }
};

int main() {
    Car car;
    car.setBrand("Tesla");  // ✅ OK (public 멤버 함수 사용)
    car.getBrand();
    
    // car.brand = "BMW"; ❌ 오류 발생 (private 변수는 직접 접근 불가능)
}

📌 3장 정리

✅ 객체(Object)는 데이터(변수)와 동작(함수)을 포함하는 단위
✅ 클래스(Class)는 객체를 생성하는 설계도
✅ 인스턴스(Instance)는 클래스를 기반으로 실제로 생성된 객체
✅ 생성자(Constructor)는 객체 생성 시 자동 실행되는 함수
✅ 소멸자(Destructor)는 객체가 소멸될 때 자동 실행되는 함수
✅ 접근 지정자(public, private, protected)를 활용해 데이터 보호 가능

반응형
저작자표시 비영리 변경금지 (새창열림)

'SW개발 > C++' 카테고리의 다른 글

6장. 복사 생성자와 임시 객체  (0) 2025.02.26
5장. 클래스  (0) 2025.02.26
4장. 함수와 네임스페이스  (0) 2025.02.26
2장. C와 C++의 차이  (0) 2025.02.11
1장. C만 배워본 내가 C++을 시작  (0) 2025.02.11
'SW개발/C++' 카테고리의 다른 글
  • 5장. 클래스
  • 4장. 함수와 네임스페이스
  • 2장. C와 C++의 차이
  • 1장. C만 배워본 내가 C++을 시작
코코도롱
코코도롱
    반응형
  • 코코도롱
    도롱이의 전자공학소
    코코도롱
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • AI (16)
        • 데이터 분석과 모델 학습 (4)
        • 모델별 정리 (7)
        • (PJT)음성 화자 분류 (4)
      • SW개발 (38)
        • C++ (9)
        • 면접을 위한 CS 전공지식 노트 (24)
        • Django+Vue.js (0)
        • 이런저런 개발이야기 (1)
        • 갑자기 C코테를 봐야할때 (2)
        • RPI5 프로젝트 (1)
        • 트러블슈팅 (1)
      • ESG (2)
        • 내가 쓰는 Assay (1)
        • 뉴스 스크랩 (1)
      • 반도체 (4)
        • 반도체 (3)
        • 슬기로운 학부생활 (1)
        • 회로 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    홉바이홉통신
    요약본
    파일입출력 #DataFrame불러오기
    입출력관리
    면접을 위한 cs전공지식 노트
    CS지식
    페이징 기법
    MySQL
    면접을 위한 CS 전공지식 노트
    멀티프로세스
    ios7계층
    c언어 입출력
    운영체제
    홉바이홉
    반도체 소자 공학
    공백포함입력받기
    보고서 수식
    정리본
    LAN
    word 수식
    전공 지식
    c io
    데이터전처리 #데이터분석 #딥러닝 #머신러닝 #Pandas #Numpy #Python
    메시지큐
    반도체 물성
    ESG
    데이터분석 #데이터전처리 #결측치 #머신러닝 #딥러닝 #Pandas #DataFrame
    데이터분석 #머신러닝 #딥러닝 #데이터사이언스 #알고리즘 #데이터전처리
    반도체 공학
    os구조
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코코도롱
3장. C++의 주요 기본 개념
상단으로

티스토리툴바