26. 클래스

Yongs12 ㅣ 2023. 6. 17. 21:48

객체 지향 프로그래밍은 클래스의 인스턴스인 객체를 사용하여 데이터와 동작을 표현하고 조작하는 프로그래밍 패러다임 이다.
C++는 클래스, 객체, 캡슐화, 상속 및 다형성과 같은 OOP 개념을 지원하는 언어이다.


클래스 구조

// class 키워드 사용

class TestClass
{
	// 접근제어 지정자 : (콜론)
    // public : 모든 접근 허용
    // private : 클래스 내부에서만 접근 허용
    // protected : 본인 및 상속된 클래스에서도 접근 허용

// public: 클래스 외부에서 접근할 수 있도록 한다.
public:
    // 멤버 변수 : 클래스에서 사용할 변수를 선언하여 사용할 수 있다.
    // 멤버 함수 : 클래스에서 사용할 함수를 선언하여 객체를 통해 사용할 수 있다.
    
// 멤버함수, 멤버 변수
// 해당 클래스가 사용하는 전용 함수
// 해당 클래스의 객체가 필요함

// 멤버함수를 객체를 통해서 호출하면 해당 객체의 주소가 
// this 포인터로 전달된다.

// private: 클래스 자체 내에서만 접근할 수 있다.
private:
    
// protected: private와 비슷하지만 파생 클래스에서 접근할 수 있다.
protected:
}

// TestClass의 test 객체 생성
TestClass test;




클래스와 객체
클래스는 데이터와 동작을 단일 엔티티로 캡슐화하는 사용자 정의 데이터 유형이다.
객체는 프로그램 실행 중에 만들고 조작할 수 있는 클래스의 인스턴스이다.

// 멤버 변수 name , age 와 멤버 함수 setName, setAge가 있는 Person이라는 클래스 정의

class Person 
{
public:
    void setName(std::string name) 
    {
        this->name = name;
    }
    
    void setAge(int age) 
    {
        this->age = age;
    }
private:
    std::string name;
    int age;
};




this 키워드
위의 클래스에서 사용한 this 키워드는 원래 C언어 에서 내가 정의한 구조체의 주소를 넘겨서 사용하는데
어차피 객체가 생성되면 그 객체의 주소를 넘겨줄것 이기 때문에 C++에서는 이 부분을 함수의 인자에서 생략하였다.
그래서 this는 사용을 안해도 히든 파라미터로 되어 있다.

// C언어 예시
void setName(Person* _this, std::string name) 
{
    _this->name = name;
}

'C, C++' 카테고리의 다른 글

29. 복사 생성자  (0) 2023.06.19
27. 클래스 생성자와 소멸자  (0) 2023.06.18
25. 함수 다중정의 (OverLoading)  (0) 2023.06.16
24. 범위기반 for문  (0) 2023.06.15
23. 참조자  (0) 2023.06.14