구조체와 클래스의 차이는
멤버 함수, 접근지정자이다.
접근 지정자 : 멤버 변수, 멤버 함수에 대해 객체 외부에서 직접적으로 접근하지 못하도록 제한할 수 있는 키워드.
외부에서 직접적으로 변경하면 안되는 멤버변수에 대해 외부 접근을 간접적으로나 아예 막는 경우를 생각할 수 있다.
public 키워드 : 외부 및 상속관계 접근을 전면 허용하는 키워드. 이 키워드 이하에 작성된 모든 멤버변수, 함수들은 외부및 상속관계에서 접근 가능.
protected 키워드 : 외부 접근은 public. 상속을 받은 파생클래스로부터의 접근 가능.
private 키워드 : 외부 접근 불가. 파생클래스 에서도 접근 불가. friend 클래스,함수에서 접근 가능.
기본적으로 아무 키워드도 적지 않는다면 private 상태로 간주됨.
이같은 접근지정자를 사용하는 이유는
클래스의 캡슐화 때문이다.
객체의 멤버 변수들중에 고유한 값이라던지 쉽게 변경되면 안되는 변수들은 외부에서 혹은 상속받은 파생클래스에서 접근하지 못하도록 제한하여 쉽게 변경할수 없게 감추는 것을 의미한다.
friend 지정자 : 접근지정자 개무시 키워드. 왠만하면 사용 안하는 걸로. 애써 설계한 캡슐화 개박살 내는 키워드임.
friend 클래스
다른 클래스를 나의 친구로 선언해서. 다른클래스에서 내 멤버 변수로 접근할수 있게 하는 것.
착각하면 안되는 것은 내가 접근하려면 다른 클래스가 나를 친구로 선언해야함.
friend 멤버함수
클래스와 같은 의미이지만 해당 멤버 함수에서만 접근 가능.
friend 전역 함수
키워드 다 개무시하고 막 접근가능. 클래스 멤버가 아닌 전역 함수화 된다.
'{Programing} > C.C++' 카테고리의 다른 글
c/c++ const 예약어 (0) | 2020.01.06 |
---|---|
c/c++ 배열, 동적할당 (0) | 2020.01.06 |
c/c++ 구조체 / 클래스 (2) (0) | 2020.01.03 |
c/c++ 구조체 / 클래스 (1) (0) | 2020.01.02 |
c/c++함수 (0) | 2020.01.02 |
댓글