반응형
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | class Counter { public: int val; void Increment(void) { val++; // 내부 접근 } }; // Increment에 의해서 val이 ++ 되는것은 내부접근 int main(void) { Counter cnt; // cnt라는 것은 객체가 된다. // 그러나 지역적으로 설정 된 지역 객체이다. cnt.val = 0; // . << 접근 연산자 cnt안에 있는 val 값을 0 으로 조정해라 //cnt.val = 0;을 시키는 것은 //class밖에서 접근하는것이므로 외부접근 cnt.Increment(); cout<<cnt.val<<endl; return 0; } | Crocus |
===============
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | #include <iostream> const int OPEN = 1; const int CLOSE = 2; class Door { private: // 내가 지금부터 선언하는 멤버는 함수이든 변수이든 // 접근지역을 privite로 하겠다. int state; // private public: // 지금부터는 public로 선언하겠다. void Open() { state=OPEN; // public } void Close() { state=CLOSE; // public } void ShowState() { cout<<"현재 문의 상태 :"; cout<<(state==OPEN)?"OPEN" : "CLOSE")<<endl; } // state가 open이 맞으면 OPEN 틀리면 CLOSE ( 3항 연산자 ) }; int main() { Door d; d.state=OPEN; d.Open(); d.ShowState(); return 0; } | Crocus |
===============
public > protected > private (포함 순서)
** public : 내부, 외부 모든 접근을 허용함.
** protected : 자신의 class와 상속된 class까지 접근 허용
** private : class 내부접근만 허용
따라서 public밑에있는 state = OPEN이런것들은 모두 내부접근이므로 변경됨
//d.state=OPEN; <<이것은 외부접근이므로 주석을 지우고 컴파일하면 에러가 난다.
**
class에 public, protected, private따위를 안적어주고 시작하면 class내에 기본값 private를 선언하고 시작한다.
struct에서는 public로 기본값이 선언된다.
(( 유일한 차이점 ))
그래도 c++에서는 struct보단 class를 더 사용해야 한다.
**
*** class의 가독성을 높인 코딩 ***
*** 주석처리는 코딩의 가독성을 높이고 코딩내용을 읽을때 용이하다 ***
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | #include <iostream> const int OPEN = 1; const int CLOSE = 2; class Door { private: int state; // private public: void Open(); // 문을 연다. void Close(); // 문을 닫는다. void ShowState(); // 상태를 알려준다. }; void Door::Open() { state=OPEN; } void Door::Close() { state=CLOSE; } void Door::ShowState() { cout<<"현재 문의 상태 :"; cout<<(state==OPEN)?"OPEN" : "CLOSE")<<endl; } int main() { Door d; // d.state=OPEN; d.Open(); d.ShowState(); return 0; } | Crocus |
===== 멤버 함수의 인-라인화 =====
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #include <iostream> const int OPEN = 1; const int CLOSE = 2; class Door { private: int state; // private public: void Open(); // 문을 연다. void Close(); // 문을 닫는다. void ShowState(); // 상태를 알려준다. }; inline void Door::Open() { state=OPEN; } inline void Door::Close() { state=CLOSE; } inline void Door::ShowState() { cout<<"현재 문의 상태 :"; cout<<(state==OPEN)?"OPEN" : "CLOSE")<<endl; } ... 생략 | Crocus |
반응형
'Basic > C++' 카테고리의 다른 글
생성자의 필요성 및 예제(1) (0) | 2015.11.24 |
---|---|
class 캡슐화, 정보은닉 (0) | 2015.11.23 |
클래스에 들어가기전, 구조체의 필요성 (0) | 2015.10.06 |
new와 delete 연산자의 기본적 기능 (0) | 2015.10.06 |
레퍼런스 심화 (0) | 2015.10.03 |