-
[C++] 클래스 생성공부/C++ 2022. 7. 13. 22:19
객체(object) : 물리적이나 추상적인 것에 대해 속성(attribute)과 메소드(method)로 모델링 한 것
속성은 객체의 상태를 나타내는 데이터이고, 메소드는 객체가 정해진 동작을 하는 함수이다.
메시지 : 객체들간의 상호작용에서 한 객체가 다른 객체로 필요한 작업이 이루어지도록 요구하는 것
메시지는 함수를 호출하는 것을 의미한다.
https://soongjamm.tistory.com/133
클래스 : 객체를 만들어내기위한 설계도, 클래스에는 객체가 포함할 속성과 메소드들의 정의되어 있어, 클래스를 사용하여 동일한 속성 및 메소드를 가지는 객체들을 생성한다. 클래스 자체에는 데이터가 저장되지않지만, 클래스에 의해 생성된 객체는 각각의 고유한 값을 가진다. 그래서 객체를 클래스의 인스턴스(사례)라고 부른다.
캡슐화(encapsulation) : 객체의 속성과 메소드들을 하나로 묶는 것, 객체의 사용과 설계를 분리하는 것이다.
객체를 사용할 때, 어떤 메시지를 보내 동작하게 할 수 있지만, 객체 내부 상태의 표현이나 구현에 대해서는 알 필요가 없다. 객체 내부에 대해서는 감추고(정보은닉), 외부로는 공개된 메소드를 통해 인터페이스를 제공하여 사용할 수 있게 하는 것을 의미한다.
클래스는 C++에서 객체지향 개념을 구현하기 위한 도구이다.
C++에서는 클래스안의 속성들을 데이터 멤버라고 부르고, 메소드를 멤버함수라고 부른다.
- 클래스의 선언
class ClassName { 가시성_지시어_1: 데이터 멤버 또는 멤버함수 리스트; 가시성_지시어_2: 데이터 멤버 또는 멤버함수 리스트; ...... };
- 가시성 지시어
가시성 지시어(visibility specifier) 공개되는 범위 private 소속 클래스의 멤버함수, 친구 클래스의 멤버함수 및 친구함수 public 전 범위 - 생성자(constructor)
객체가 생성될 때 수행할 작업을 정의하는 특수한 멤버함수이다.
객체를 정의할때 자동적으로 호출된다.
class ClassName { public: ClassName(fParameterList) { //생성자 ...... } ...... };
생성자는 멤버함수와 유사하지만, 아래와 같아야한다.
1. 생성자는 클래스의 이름을 사용해 선언해야한다.
2. 생성자는 반환자료형이 없다. (따로 void라고 표기도 하지않는다.)
3. public으로 선언한 생성자만 클래스 외부에서 객체를 생성하는데 사용할 수 있다.
- 소멸자(destructor)
class ClassName { public: ~ClassName(fParameterList) { //소멸자 ...... } ...... };
객체가 소멸될 때 자동으로 실행되는 함수, 소멸자도 아래와 같은 고유한 사항이 있다.
1, 소멸자의 클래스는 이름에 '~'를 붙여 선언한다.
2. 소멸자는 반환자료형이 없다. (위와동일)
3. 매개변수를 포함할 수 없다.
4. 소멸자는 생성자와 다르게 다중정의 할 수 없으며, 클래스에 하나만 정의한다.
5. public으로 선언하는 것이 일반적이다.
6. 상속을 통해 파생클래스를 정의하는 경우 virtual을 지정해 가상함수가 되도록 하는 것이 좋다.
'공부 > C++' 카테고리의 다른 글
[C++] 콘솔창 키입력 메뉴이동 ConsoleHandle (0) 2023.07.19 __restrict (0) 2023.07.14 [C++] 동적 할당/new, delete (0) 2022.07.07 [C++] cout 조정자(Manipulator) (0) 2022.07.06 c++11/14 변경사항 (0) 2022.07.06