반응형
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