알버트의 개발하는 블로그

C 언어 / C++ 언어 제21강 클래스(class)와 클래스 생성자(constructor) 함수 본문

프로그래밍 언어/C & C++

C 언어 / C++ 언어 제21강 클래스(class)와 클래스 생성자(constructor) 함수

알버트 2021. 4. 30. 09:41

 

이번 시간에는 우리가 c에서 클래스를 생성했을 때 자동으로 함께 생성되는 생성자 함수에 대해서 자세히 살펴보겠습니다.

 

 

생성자 함수란?

생성자 함수는 말 그대로, 클래스가 생성됐을 때 함께 '생성'되는 함수입니다. 저번 시간에 클래스를 선언할 때 이렇게 선언된다고 하였는데요.

class 클래스명 { [접근 권한 지정자:] //생략 가능, 생략시 private이 기본 접근 권한으로 사용된다. 클래스 멤버 변수 선언;...; [접근 권한 지정자:] [생성자 함수] 클래스 멤버 함수 선언... };

 

이 구조에서 [생성자 함수]가 눈에 띄실 겁니다. 클래스를 생성할 때 자동으로 생성되는 생성자 함수는 주로 클래스변수들의 초기화에 많이 사용됩니다.

 

 

 

생성자 함수의 규칙

단, 생성자 함수를 쓸 때는 규칙이 있습니다.

1. 생성자 함수(이하 생성자)의 이름은 반드시 클래스 이름과 같아야 합니다.

2. 생성자는 일반 함수와 달리 리턴 타입을 쓰지 않고 return도 사용하지 않습니다.

3. 프로그래머가 별도로 생성자를 정의하지 않으면 컴파일러가 아무런 일도 하지 않는 기본 생성자를 자동으로 만들어 주지만 프로그래머가 생성자를 정의하면 기본 생성자를 자동으로 만들지 않습니다.

4. 클래스의 객체가 생성될 때 private 권한으로 설정한 맴버 변수에 초기치를 할당하거나 메모리를 동적으로 할당하는 경우 사용됩니다.

이와 같은 규칙을 인지하시면 생성자를 잘 쓰실 수가 있습니다. 이제 예제를 통해서 클래스를 선언하고 클래스와 함께 생성되는 생성자에 대해 알아보겠습니다.

 

 

 

생성자 함수 예제

대표사진 삭제

사진 설명을 입력하세요.

이와 같이 코딩했는데요. 첫번째로 만든 hi함수가 바로 생성자함수이고 두번째로 만든 show() 함수는 클래스 멤버함수입니다.

생성자는 클래스와 이름이 같아야 하기 때문에 hi라고 이름을 지어주었습니다. 생성자 함수가 위 코딩에서는 객체의 변수를 초기화하는데 쓰였습니다. 메인 함수의 hi c1(99,100); 이 생성자 함수입니다.

생성자 함수를 통해서 99와 100이라는 값이 c1객체변수에 저장되는 것을 알 수 있습니다.

 

생성자 함수가 돌아가는 순서를 빨간색으로 칠해놨는데요.

(1번)생성자함수를 선언해주면 그 안에 들어가 있는 인수들이

(2번) hi 함수의 인수로 들어가게 됩니다.

(3번)그리고 99랑 100을 c1객체의 cpp와 java에 저장합니다.

(4번)그리고 값이 잘 들어갔는지 클래스 멤버 함수인 show()함수를 통해서 출력해줍니다.

 

 

 

한번 실행해볼까요?

대표사진 삭제

사진 설명을 입력하세요.

이처럼 우리가 인수로 넣어주었던 99와 100이 c1객체의 cpp와 java에 잘 들어갔음을 알 수 있습니다.

생성자 함수를 잘 이용한다면 클래스를 더 쉽고 효율적으로 잘 쓸 수 있습니다. 그리고 클래스와 생성자 함수, 더 나아가 getter과 setter함수는 c뿐만 아니라 자바까지 넘어가게 되는 기능이라서 반드시 충분히 익혀두셔야 합니다. 읽어주셔서 감사합니다.