[C++] 클래스와 객체(2)
디폴트 생성자
디폴트 생성자는 매개변수가 없는 생성자 또는 매개변수가 있지만 모두 디폴트 값이 있는 디폴트 인수만 포함하고 있는 생성자이다.
class Counter {
int value;
public:
Counter() {} //디폴트 생성자
.....
};
Counter 클래스의 객체를 생성하면 데이터 멤버가 초기화되지 않은 상태로 객체가 만들어진다.
객체 배열
디폴트 생성자는 인수를 전달할 필요가 없기 때문에 이러한 형식으로 객체 배열을 선언하는 문장을 사용할 수 있다.
복사 생성자
복사 생성자란 같은 클래스의 객체를 복사하여 객체를 만드는 생성자이다. 만일 복사 생성자를 명시적으로 선언하지 않으면 컴파일러는 원본 객체의 멤버들을 그대로 복사하여 객체를 정의하는 복사 생성자를 자동으로 만든다.
이동 생성자
이동 생성자는 복사하는 대신 이동을 통해 효율을 개선한다.
class ClassName {
....
className(ClassName&&obj){ //이동 생성자
.... //생성되는 객체에 obj의 내용을 이동
}
};
'&&'는 r-value 참조를 나타낸다.
static 데이터 멤버
클래스를 선언할 때 static으로 선언한 데이터 멤버는 각각의 객체마다 개별적으로 존재하는 것이 아니라 전체 클래스에 대해 하나만 존재하며, 해당 클래스의 객체들이 그 데이터 멤버를 공유한다.
static 멤버 함수
static 멤버함수는 특정 객체에 대한 처리를 하는 것이 아니라 클래스의 이름으로 어떠한 작업을 수행하는 함수이다.
문자를 저장하는 스택 클래스 - CharStack
CharStack 클래스의 메소드
메소드 | 비고 |
CharStack() | 생성자 |
bool chkEmpty() | 스택이 비어 있는지 검사함 |
bool chkFull() | 스택이 가득 차 있는지 검사함 |
bool push(char) | 스택에 데이터를 저장함 |
char chkFull() | 스택이 가득 차 있는지 검사함 |
CharStack 클래스의 속성
속성 | 비고 |
int top | 가장 위에 있는 데이터 위치를 가리킴 |
char buf[20] | 데이터 저장공간 |
복소수 클래스 - Complex1
Complex1 클래스의 메소드
메소드 | 비고 |
Complex1(double r, double i) | 생성자 |
Complex1 conj() | 허수부의 부호를 바꾼 켤레복소수 반환 |
Complex1 add(const Complex1& c) | 덧셈 |
Complex1 sub(const Complex1& c) | 뺄셈 |
Complex1 mul(const Complex1& c) | 곱셈 |
Complex1 div(const Complex1& c) | 나눗셈 |
void display() | 복소수의 값 출력 |
Complex1 클래스의 속성
속성 | 비고 |
double rPart | 실수부의 값 |
double iPart | 허수부의 값 |
출처 : 전중남·이병래. 「C++프로그래밍」. 한국방송통신대학교출판문화원. 2020