B2024001225 윤지선
2학기 7주차 예습과제 본문
접근권한(접근속성, access modifier)
정수 클래스와 객체
- 정수를 다루기 위한 클래스 Integer
class Integer{ // Integer라는 이름의 class
private: // 속성
int val; // 멤버변수, private 속성
public: // 이 줄 이하는 public 속성
int getVal(); // 멤버함수, 출력, getter
int setVal(); // 멤버함수, 입력, setter
}Val1; // 1. 객체를 만드는(정의) 첫 번째 방법
Integer Val2; // 2. 객체를 만드는 두 번째 방법
클래스 멤버의 접근 권한
● 멤버변수와 멤버함수를 선언하기 전에 그들의 속성(멤버의 액세스 권한)을 지정\
● 클래스 외부에서 멤버에 접근할 수 있는 권한
- 전용(private)
- 해당 클래스 내부에서만 접근할 수 있음
- 디폴트 속성으로 생략 가능
- 범용(public)
- 어디에서나 접근 할 수 있음
- 보호(protected)
- private이지만 자식에게는 접근할 수 있도록
클래스 멤버의 접근 권한 : private(전용)
● 자료(data)를 외부로부터 은폐하여 외부로부터의 잘못된 조작이나 사용에서 보호받기 위한 방법 제공(캡슐화)
● private 멤버는 클래스 외부에서 직접 접근할 수 없다(information hiding)
● 멤버변수는 주로 private으로 선언한다.
● 생략할 수 있다(멤버의 액세스 권한이 없으면 private)
● 해당 클래스의 멤버함수만이 접근 가능하다.
● age라는 멤버변수는 속성이 private이므로 해당 클래스의 멤버함수(getAge())에 의해서만 접근이 가능하다.
● coco.age(X) / coco.getAge()(O)
● 클래스 외부에서 접근(입/출력)
클래스 멤버의 접근 권한 : protected(보호)
● 동일한 클래스의 멤버함수와 현재 클래스를 상속받아 생성된 파생(자식)클래스의 멤버함수만이 직접 접근할 수 있다.
● 자신의 멤버함수와 자식의 멤버함수만 접근할 수 있게 함
● 상속을 하지 않으면 private 속성과 같음
● 상속에서 자세히 설명
함수 정의, 호출, 선언
● 함수 정의
- 함수 만들기
- 이름, 매개변수, 리턴형, 기능
● 함수 호출
- 함수 사용하기
- 이름, 매개변수
● 함수 선언
- 함수의 사용법
- 이름, 매개변수, 리턴형
- 컴파일러에게 함수에 대한 정보를 미리 줌
void display(void)
{
prinf("안녕");
}
함수의 정의와 선언(원형, prototype)
● 덧셈기 함수의 정의(구현)
● add() 함수의 정의에서 첫 번째 줄인 "int add(int x, int y)" 를 함수의 머리라고 하고 아래 부분은 함수의 본체(body) 라고 함
● 함수의 머리 부분을 다음과 같이 하나의 문장 (새미콜론으로 끝남) 으로 만드는 것을 함수 선언 또는 함수 원형(prototype)이라고 함
return문
● 결과 값을 호출한 함수로 반환
● return문을 만나면 함수의 나머지 부분에 상관없이 함수의 실행을 종료하고 호출한 함수로 넘어감
private(protected)과 public 멤버의 접근 방법
멤버함수의 선언과 정의
● 클래스 내에 나타난 함수의 프로토타입(prototype)은 함수를 선언하는 것
● 실제 함수를 사용하기 위해서는 멤버함수에 대한 정의가 필요
● 멤버함수를 정의하는 2가지 방법
- 클래스 안에서의 정의
- 클래스 밖에서의 정의
- 클래스 안에서 정의하는 경우는 클래스의 몸체가 비대해질 수 있으므로 잘 사용하지 않는다.
객체의 멤버 호출
● 직접참조연산자
- 일반 객체가 멤버(변수/함수)에 접근하기 위해 사용
● 간접참조연산자
- 포인터 객체가 멤버(변수/함수)에 접근하기 위해 사용
'2024년 2학기 > C++ 프로그래밍' 카테고리의 다른 글
C++ 시험범위 PPT (0) | 2024.10.19 |
---|---|
2학기 7주차 과제 (0) | 2024.10.14 |
2학기 6주차 과제 (1) | 2024.10.07 |
2학기 6주차 예습과제 (0) | 2024.10.06 |
자료구조 시간에 공부한 C++프로그래밍 (0) | 2024.10.02 |