프로그래밍/겁나 쉽게 쓴 C, C++ 설명서

C++ 클래스

tonystark100 2024. 4. 12. 01:00

목차

    반응형

    클래스 정의

    반응형

    C++는 객체지향 프로그래밍 언어입니다.

    따라서 클래스를 통해 객체를 생성하고, 객체를 이용해 프로그램을 만듭니다.

     

    클래스를 정의하려면 class 키워드를 사용합니다.

    클래스는 사용자 정의 데이터 타입으로, 객체를 생성하는 “틀” 또는 “청사진” 역할을 합니다.

     

    클래스는 데이터와 기능하나로 묶은 붕어빵 틀이라고 생각하면 편합니다.

    틀이 있으므로 붕어빵을 같은 모양으로 계속 만들 수 있다는 장점이 있는데, 바로 코드의 재사용성 높일 수 있습니다. 

    #include <iostream>
    #include <string>
    
    // Car 클래스 정의
    class Car {
    public: // public 접근 지정자
        std::string brand; // 멤버 변수
        std::string model; // 멤버 변수
        int year; // 멤버 변수
    
        // 멤버 함수
        void getInfo() {
            std::cout << "Brand: " << brand << "\n";
            std::cout << "Model: " << model << "\n";
            std::cout << "Year: " << year << "\n";
        }
    };

     

    객체 생성

    객체는 클래스를 통해 생성됩니다. 클래스 이름 뒤에 객체이름(변수명)을 지정하여 객체를 생성합니다.

    int main() {
        Car car1; // Car 클래스의 객체 생성
        return 0;
    }

     

     

     

    로또로 화성 - Google Play 앱

    간편한 로또 번호 생성 및 QR 결과 확인 어플입니다.

    play.google.com

     

    클래스 멤버 접근

    클래스 멤버변수(데이터, 속성), 멤버함수(기능)접근하려면 객체에 대해 점(.)을 사용해서 접근합니다.

    int main() {
        Car car1; // Car 클래스의 객체 생성
        car1.brand = "현대"; // 객체의 멤버 변수에 값 할당
        car1.model = "소나타";
        car1.year = 2020;
    
        car1.getInfo(); // 객체의 멤버 함수 호출
    
        return 0;
    }

     

    클래스 접근 지정자

    C++에서 public, private, protected클래스 멤버에 대한 접근 지정자입니다.

    클래스의 멤버(변수, 함수)어디에서 접근될 수 있는지를 결정합니다.

    public : public으로 선언된 멤버는 클래스의 외부에서도 접근할 수 있습니다.

    즉, 클래스의 객체를 통해 public 멤버에 접근할 수 있습니다.

     

    private : private으로 선언된 멤버는 해당 클래스 내부에서만 접근할 수 있습니다.

    클래스의 외부나 파생 클래스에서 private  멤버에 접근할 수 없습니다.

     

    protected : protected로 선언된 멤버는 해당 클래스와 파생 클래스 내부에서 접근할 수 있습니다.

    하지만 클래스의 외부에서는 protected 멤버에 접근할 수 없습니다.

     

    클래스 생성자

    생성자는 클래스와 동일한 이름을 가지고, 반환 타입이 없습니다.

    생성자는 매개변수가 없는 생성자와 매개변수를 가지는 생성자가 있습니다.

     

    매개변수가 없는 생성자는 객체 생성할 때 0처럼 기본값으로 설정합니다.

    매개변수를 가지는 생성자의 경우 객체 생성할 때 원하는 초기값을 지정할 수 있습니다.

     

    매개변수를 가지는 생성자는 생성자 오버로딩입니다.

    생성자 오버로딩은 매개변수의 개수나, 타입을 다르게 하여 만들 수 있습니다.

     

    생성자는 클래스의 객체가 생성될 때 자동으로 호출되고, 멤버 변수의 초기값을 할당해 주고, 생성에 필요한 처리 합니다.

    class ClassName {
    public:
        ClassName() { // 생성자
            // 생성자 로직
        }
    };

     

    클래스 소멸자

    소멸자는 오버로딩을 할 수 없습니다.

    소멸자는 클래스 이름 앞에 물결(~)을 사용하여 작성합니다.

    소멸자는 객체가 필요 없을 때 자동으로 호출되고, 객체를 메모리에서 삭제(해제)합니다.

    class ClassName {
    public:
        ~ClassName() { // 소멸자
            // 소멸자 로직
        }
    };

     

    클래스의 생성자와, 소멸자는 객체의 생명주기를 관리하는 데 쓰입니다.

     

    생성자와 소멸자 예시

    #include <iostream>
    using namespace std;
    
    class Person {
    private:
        int age;
    
    public:
        // 매개변수가 없는 생성자
        Person() {
            age = 20;
        }
    
        // 매개변수가 있는 생성자
        Person(int a) {
            age = a;
        }
    
        // 소멸자
        ~Person() {
            cout << "소멸됨" << endl;
        }
    
        int getAge() {
            return age;
        }
    };
    
    int main() {
        Person person1, person2(45);
    
        cout << "Person1 Age = " << person1.getAge() << endl;
        cout << "Person2 Age = " << person2.getAge() << endl;
    
        return 0;
    }

     

    클래스 상속

    C++에서 상속은 객체 지향 프로그래밍의 핵심 기능 중 하나입니다

    기존 클래스(기본 클래스 또는 부모 클래스라고 함)의 속성과 메서드를 새로운 클래스(파생 클래스 또는 자식 클래스라고 함)가 상속할 수 있습니다.

    class Animal { // 기본 클래스
    public:
        void eat() {
            cout << "I can eat!" << endl;
        }
    };
    
    class Dog : public Animal { // 파생 클래스
    public:
        void bark() {
            cout << "I can bark! Woof woof!!" << endl;
        }
    };
    
    int main() {
        Dog dog1;
        dog1.eat(); // 기본 클래스의 메서드 호출
        dog1.bark(); // 파생 클래스의 메서드 호출
        return 0;
    }

     

    위의 코드를 보면 Dog는 Animal을 상속받았기 때문에 자신의 클래스에 없는 eat()를 사용할 수 있게 됩니다.

    이로써 기능을 확장하고 재사용성을 높일 수 있다.

     

    다음 글 자바, 역사, 특징, 장단점

     

     

    ** 이 글이 좋았다면 좋아요와 구독을 눌러주세요. **

    반응형

    '프로그래밍 > 겁나 쉽게 쓴 C, C++ 설명서' 카테고리의 다른 글

    변수란?  (0) 2024.04.29
    C 프로그래밍의 시작  (0) 2024.04.29
    주석이란?  (0) 2024.04.29
    C++ 기초 공사  (0) 2024.04.10
    [기술] C와 C++ 역사, 특징, 장단점, 차이점  (0) 2024.03.02