Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ 클래스와 객체의 이해: 개념부터 실전 예제까지

클래스는 C++의 핵심 기능으로, 객체 지향 프로그래밍(OOP) 개념을 지원하며 사용자가 직접 정의할 수 있는 데이터 타입입니다. 클래스는 객체에 대한 명세를 제공하며, 데이터 변수와 그 데이터를 조작하는 함수들을 하나의 패키지로 묶어 관리합니다.

클래스 정의

클래스 정의는 class 키워드로 시작한 뒤 클래스 이름을 작성하는 방식으로 이루어집니다. 이후 중괄호 {}로 감싸진 클래스 본문(body)을 정의하며, 클래스 정의 끝에는 반드시 세미콜론(;)이 붙거나 그 뒤에 객체 선언 목록이 따라와야 합니다.

다음은 C++에서 클래스를 정의한 예시입니다.

class Student {
    int rollno;
    char name[50];
    float marks;
};

위 클래스는 학생의 세부 정보인 학번(roll number), 이름(name), 점수(marks)를 담고 있습니다.

객체 정의

클래스가 정의되었다고 해서 곧바로 메모리나 저장 공간이 할당되는 것은 아닙니다. 클래스는 어디까지나 하나의 '명세(specification)'일 뿐입니다. 따라서 클래스 내부에 정의된 데이터와 함수에 접근하려면 클래스로부터 객체(object)를 생성해야 합니다. 이런 이유로 클래스를 객체의 설계도(blueprint)라고 부르기도 합니다.

Student 클래스의 객체를 선언하는 방법은 다음과 같습니다.

Student stu1;

아래 예제 프로그램을 통해 C++에서 클래스와 객체가 어떻게 동작하는지 확인할 수 있습니다.

예제 코드

#include <iostream>
using namespace std;
class Student {
    public:
    int rollno;
    char name[50];
    float marks;
    void display() {
        cout<<"Roll Number: "<< rollno <<endl;
        cout<<"Name: "<< name <<endl;
        cout<<"Marks: "<< marks <<endl;
    }
};
int main() {
    Student stu1 = {1, "Harry", 91.5};
    stu1.display();
    return 0;
}

실행 결과

Roll Number: 1
Name: Harry
Marks: 91.5

코드 분석

위 프로그램에서는 먼저 Student 클래스를 정의했습니다. 이 클래스에는 학번, 이름, 점수 등 학생의 세부 정보가 포함되어 있으며, 모든 학생 정보를 화면에 출력해 주는 멤버 함수 display()도 함께 정의되어 있습니다. 해당 부분의 코드는 다음과 같습니다.

class Student {
    public:
    int rollno;
    char name[50];
    float marks;
    void display() {
        cout<<"Roll Number: "<< rollno <<endl;
        cout<<"Name: "<< name <<endl;
        cout<<"Marks: "<< marks <<endl;
    }
};

그다음 main() 함수 안에서 학생 정보를 담은 Student 클래스의 객체를 생성하고, display() 함수를 호출하여 정보를 출력합니다. 이 과정은 아래 코드에서 확인할 수 있습니다.

Student stu1 = {1, "Harry", 91.5};
stu1.display();

정리

클래스는 데이터와 함수를 하나로 묶는 C++ OOP의 기본 단위이며, 객체는 그 클래스를 기반으로 실제 메모리에 생성된 인스턴스입니다. 클래스라는 설계도를 통해 여러 개의 독립적인 객체를 만들 수 있고, 각 객체는 자신만의 데이터 값을 가질 수 있다는 점이 핵심입니다.