알버트의 개발하는 블로그

C 언어 / C++ 언어 제20강 클래스(class)와 클래스 멤버 함수, 접근 권한 지정자 개념 익히기 본문

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

C 언어 / C++ 언어 제20강 클래스(class)와 클래스 멤버 함수, 접근 권한 지정자 개념 익히기

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

 

이번 시간에는 c언어에서 제공하는 기능 중에 하나인 클래스(class)에 대해서 한번 배워보겠습니다.


클래스란?

클래스는 구조체처럼 다양한 변수를 포함할 수 있습니다. 하지만 클래스는, 구조체와는 다르게 함수도 포함할 수 있습니다. 구조체는 단지 그 안에 자료형만을 포함하고 있었습니다. 하지만 클래스는 자료형을 포함할 뿐 아니라 그 안에 함수(메소드)까지 포함하고 있습니다.

 

클래스의 구조를 살펴보면,

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

 

이와 같은 구조를 가지게 됩니다. 구조체랑 비교해보면

struct 구조체명 { 구조체 멤버 변수 선언; ...;}

 

접근 권한 지정자 생성자 함수, 클래스 멤버 함수가 새로 추가되었음을 알 수 있습니다.

 

여기서 접근 권한 지정자라는 것은 클래스에 누가 접근해서 자료를 처리할 수 있는지정해주는 것입니다.

private, protected, public 이렇게 3가지가 있습니다. (자바에서는 package가 추가됩니다.)

// private : 클래스 외부에서 내부의 멤버에 접근할 수 없다.

// protected : 현재 클래스와 현재 클래스를 상속받은 자식 클래스에서만 접근할 수 있다.

// public : 모든 위치에서 자유롭게 접근할 수 있다.

따로 접근권한 지정자를 선언해주지 않으면 private를 기본 지정자로 설정합니다.

그래서 외부에서는 이 자료를 처리할 수가 없어요. 만약 외부에서 아무나 이 변수들을 처리할 수 있게 하려면 public: 이라고 선언해주어야 합니다.

자 이제 한번 간단한 예제를 통해서 클래스를 익혀보겠습니다.

 

 

 


클래스 예제

대표사진 삭제

사진 설명을 입력하세요.

메인 함수 위에 hi라는 이름의 클래스를 먼저 생성해주었습니다.

이 클래스에는 변수는 int data가 들어있고 함수는 void say()를 넣어주었습니다.

그리고 메인 함수에서 이 c1이라는 이름으로 hi클래스의 객체를 생성해주었습니다.

객체라는 것은, 이 클래스라는 설계도를 이용해서 실제로 만들어진 건물이라고 보시면 됩니다.

메인 함수에서 쓸 수 있도록 두 가지의 방법으로 c1객체와 c2객체를 생성해주었습니다.

hi클래스의 두 객체를 만든 뒤에 say() 함수를 써보았습니다. 과연 두 객체의 say함수가 잘 실행될까요?

대표사진 삭제

사진 설명을 입력하세요.

이렇게 콘솔창이 실행되는 것을 알 수 있습니다. c1과 c2에 있는 두 함수가 정상적으로 실행된 것을 알 수 있습니다. 이처럼 클래스는 여러 가지 변수와 함수를 처리함에 있어서 아주 유용한 기능이기 때문에 반드시 잘 익혀야 합니다. 또한 이 클래스는 추후에 배우게 될 자바에서는 주구장창 봐야하는 아이입니다. 그래서 이 클래스에 대한 개념을 충분히 익히고 넘어가는 것을 추천드립니다.

 

읽어주셔서 감사합니다~