minjeong-oh
기록
minjeong-oh
전체 방문자
오늘
어제
  • 분류 전체보기 (207)
    • ML & Neural Net (3)
    • ◼️GNN (1)
    • ◼️시계열 (1)
    • ◼️추천시스템 (0)
    • ◼️수학 (3)
    • Data Engineer (2)
    • ◼️Spark (1)
    • ◼️Kafka (1)
    • ◼️Elestic Search (0)
    • ◼️Redis (0)
    • ◼️ClickHouse (1)
    • Programming Language (4)
    • ◼️React (0)
    • ◼️Git (1)
    • ◼️Python (1)
    • ◼️C++ (33)
    • ◼️Fortran 99 (2)
    • ◼️OpenGL (7)
    • ◼️MFC (35)
    • ◼️Flutter (46)
    • ◼️Kotlin (1)
    • ◼️Android (1)
    • ◼️Java (1)
    • ◼️C (4)
    • Development (0)
    • ◼️디자인패턴 (0)
    • ◼️네트워크 (2)
    • ◼️인증 (1)
    • Computer Science (4)
    • 알고리즘 문제풀이 (12)
    • SQL 고득점 Kit 문제풀이 (8)
    • 취업준비 (0)
    • Notion 정리 글 (1)
    • Article Scrap (12)
      • Careerly - Q&A (7)
      • Careerly - Post (2)
    • 기타 등등 (16)

블로그 메뉴

  • 글쓰기
  • 홈
  • 태그
  • 방명록
  • 편집

공지사항

인기 글

태그

  • kafka구축
  • 이것이C++이다책참고
  • 리눅스파티션
  • NextJSSwagger
  • 19년식그램램장착
  • 그램업그레이드
  • mfc
  • API문서정리
  • hello테마
  • AI배워야하나
  • 그램풀스팩업그레이드
  • 구조체매개변수
  • GSLB
  • 19년식그램SSD장착
  • 인공지능개발자
  • 티스토리폰트배경색없애기
  • 구조체배열포인터
  • SpringBootSwagger
  • OpenGL회전
  • 이차원구조체배열포인터

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
minjeong-oh

기록

◼️C++

[C++] 클래스 접근 제어 지시자

2023. 9. 17. 22:18

접근 제어 지시자

제작자와 사용자를 구분하는 매우 중요한 문법이다.

제작자 스스로 자신이 만든 클래스의 특정 요소에 사용자가 접근할 수 없게 하려면 접근 제어 지시자를 활용해야 한다.

- 제작자가 얻는 이득: 사용자로 인한 값의 변화를 통제할 수 있다. 

 

- public: 멤버에 관한 모든 외부 접근이 허용

 

- protected: 멤버에 관한 모든 외부 접근이 차단. 단, 상속 관계에 있는 파생 클래스에서의 접근은 허용

 

- private(default): 외부 접근 뿐만 아니라 파생클래스로부터의 접근까지 모두 차단. 클래스를 선언할 떄 별도로 접근 제어 지시자를 기술하지 않으면 private으로 간주.

 

private 멤버변수를 사용자 코드에서 접근할 수 없다.

//제작자 코드
class CTest
{
  int m_nData;  //기본 private

public:
  void printData(){
  	cout << m_nData << endl;  //멤버 함수에서는 private에 접근 가능하다.
  }
};


//사용자 코드
int main(){
  CTest t;  //선언하면 생성자 함수가 호출된다.
  t.m_nData = 10;  //오류. 접근 불가능
  cout << t.m_nData << endl;  //접근 불가능? 요고도?
  
  return 0;
}

 

생성자 함수도 접근제어지시자를 기술하지 않으면 private이 된다.

(객체의 생성의 제어할 목적으로 일부러 private으로 선언하는 경우도 있다.)

//제작자 코드
class CTest
{
  //기본 접근제어지시자 private
  CTest() {};
  int m_nData; 

public:
  void printData(){
  	cout << m_nData << endl;  //멤버 함수에서는 private에 접근 가능하다.
  }
};


//사용자 코드
int main(){
  CTest t;  //생성자를 private으로 선언했기 때문에 접근할 수 없다. (오류)
  
  return 0;
}

 

더보기
 

Visual Studio C++ 사전

c++ 공부 내용을 지속해서 추가하는 게시글입니다. 참고 책 Part1. C에서 C++로 문법 전환하기 Chap1. C와는 다른 C++ [C++] Hello world 출력해보기 [C++] 여러 변수 출력하기 [C++] Visual Studio 에서 추가로 사용

genius-duck-coding-story.tistory.com

 

 

 

'◼️C++' 카테고리의 다른 글

[C++] 동적 객체의 생성과 소멸  (0) 2023.09.17
[C++] 생성자와 소멸자  (0) 2023.09.17
[C++] 클래스 기본 문법  (0) 2023.09.17
[C++] 객체지향 프로그래밍 개요  (0) 2023.09.17
[C++] 식별자 검색 순서  (0) 2023.09.07

    티스토리툴바