[C++] 클래스와 객체

컴퓨터 과학/[C++] 기초

[C++] 클래스와 객체

INCHELIN 2022. 12. 12. 23:11
728x90
  • 클래스 : 객체의 설계도와 같고, 클래스에는 객체가 포함할 속성에 대한 명세와 메소드들이 정의되어 있음
  • 데이터 멤버 : 클래스 안에 정의한 속성
  • 멤버 함수 : 메소드

 

  • 가시성 지시어 : private(default, 정보은닉), protected, public

 

  • 생성자와 소멸자
    • 생성자 : 객체가 생성될 때 수행할 작업을 정의하는 특수한 멤버함수로서, 객체를 정의하는 문장에 의해 자동적으로 호출됨
      • 클래스의 이름을 사용하여 선언
      • 머리부에 반환 자료형을 표시하지 않음
      • 몸체 내에서 return 명령으로 값을 반환할 수 없음
      • 다중정의 할 수 있음
class Counter {
	int value;
public:
	Counter() //생성자
    
    .
    .
};

 

  • 초기화 리스트
    • 생성자가 하는 주요 작업으로는 데이터 멤버에 적절한 초깃값을 넣는 것
    • 함수의 머리에 콜론(:)을 기입하고 '변수명{초깃값}' 또는 '변수명(초깃값)'형태로 지정
Counter() : value{0} {} // 생성자 및 초기화

 

  • 소멸자
    • 객체가 소멸될 때 자동으로 실행되는 함수
      • return 명령으로 값을 반환할 수 없으며, 함수 머리에 반환할 자료를 표시하지 않는다.
      • 매개변수를 포함할 수 없다.
      • 다중정의할 수 없으며, 클래스에 하나만 정의한다.
~ClassName() //소멸자

 

  • 디폴트 생성자
    • 매개변수가 없는 생성자 또는 매개변수가 있지만 모두 디폴트 값이 있는 디폴트 인수만 포함하고 있는 생성자
  • 복사 생성자
    • 같은 클래스의 객체를 복사하여 객체를 만드는 생성자
Copycat(const Copycat& cc) //복사 생성자 원형
  • 이동 생성자
    • r-value 참조를 사용
    • *r-value : 함수의 실행 결과 반환되는 객체와 같이 곧 소멸될 예정인 임시 객체나 10, 'a', true 등과 같은 리터럴이 해당
ClassName(ClassName&& obj) // 이동생성자

 

  • static 멤버함수
    • 객체가 정의되지 않아도 사용할 수 있다.
    • 일반 데이터 멤버는 액세스할 수 없다.(static멤버함수에서는 일반 멤버함수를 호출 할 수 없음)
    • 객체 생성 여부와 관계없이 클래스에 대해 하나만 만들어진다.
728x90