본문 바로가기
공부/C, C++

[C/C++] Class (1) - 접근 제한자 (private, protected, public)

by 김샤랑 2022. 3. 22.

[C/C++] Class (1) - 접근 제한자 (private, protected, public)


목차

1. struct 사용의 변화

2. 접근 제한자 (private, protected, public)

3. private vs public

4. class란

5. class 초기화 문법

6. 멤버 함수

7. 레퍼런스 변수


2. 접근 제한자 (private, protected, public)

 

구조체로도 내가 원하는 자료형을 만들 수 있지만 Class로도 원하는 대로 만들 수 있다.

C에는 없던 class에는 접근 제한자라는 것이 있다.

접근이란 클래스 및 인터페이스, 이들이 가진 멤버의 접근을 말한다.

 

클래스 내의 멤버변수 or 멤버함수의 접근 레벨을 정할 수 있다.

 

접근 제한자

  • private
  • public
  • protected (상속과 관련된 개념으로 추후 포스팅)

Q : 왜 이런 것이 생겼을까?

A : 객체 안의 멤버를 언제든지 바꿀 수 있게 되는 것(접근)을 방지하기 위해서이다.

 

- 예시

int main()
{
	tLinkedList list = {}; //생성
	InitList(&list);  //초기화
	PushFront(&list, 300);
    
    list.iCount = 10; // 이렇게 함수가 아닌 직접적인 접근으로 값을 바꾸는 일을 방지하고자 한다.

	ReleaseList(&list);
	return 0;
}

 

public: 공개, 외부 클래스가 자유롭게 사용 가능.
private: 비공개, 외부에서 사용 x. 자료형을 사용할 때 볼 수 없다. 
protected(상속) : 추후에 포스팅

 

c에서는 무조건 공개처리여서 바꿀 수 없었다.


3. private vs public

Class CMy
{
private:
	int m_i;
public:
    void SetInt(int i)
    {
    	m_i = i;
    }
};

 

다음과 같이 만들었을 때를 가정한다.

int m_i가 private안에 있다.

main에서 m_i의 값을 직접 바꿀 수는 없지만, SetInt함수를 통해서 바꿀 수 있게 된다.

 

- Cmy c;

- c.m_i = 10 (x)

- c.SetInt(10); (o)


4. class란

아직 class의 모든 기능을 알진 못하지만, 지금껏 알아왔던 구조체보다 더 유용하게 사용할 수 있다는 것을 알 수 있다. 

그래서 클래스는 C에서의 구조체보다 더 확장된, 상위 호환적인 기능으로 볼 수 있다. 

앞으로 클래스의 기능들에 대해 차례대로 알아가 보자.

 

c에서 구조체부터 배우는 것은 역시 어려운것부터 쉬운 것으로 배우는 게 훨씬 학습에 좋다고 생각하기 때문이다.

처음부터 class를 배웠다면 이러한 기능들을 당연하게 생각했지 않을까.

 


C언어가 절차 지향적인 언어였다면, C++ 언어는 객체지향적 언어이다.

서로 반대의 개념이라기보다는 지향하는 것이 다를 뿐이다.

 

C언어는 코드 순인 순차적 실행에 초점을 두었다면, C++ 같은 객체지향적 언어는 객체 간의 관계에 초점을 둘 뿐이다.

객체를 만들어내기 위해서는 class라는 틀같은 개념이 필요한 것이다.

 

객체에 대한 더 자세한 개념들은 구글링을 통해 보완해보자.

 

 

댓글