객체 지향 프로그래밍은 클래스의 인스턴스인 객체를 사용하여 데이터와 동작을 표현하고 조작하는 프로그래밍 패러다임 이다.
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 |