C++

C++5일차

일어나코딩해야지 2018. 5. 30. 23:38

C++5일차


class


class는 자료를 저장하고 자료를 처리할수 있고 특정한 용도를 수행하기 위한 변수와 함수를 모아둔 틀입니다. 또한, class는 struct와 거의 비슷하지만 몇가지가 다르다네요.

그리고 객체는 class를 이용하여 찍어낸 개체라고 합니다.(by.두들낙서)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
using namespace std;
 
struct a { //struct는 기본 적으로 public 속성을 가지고 있습니다
    int k = 10;
    int s = 0;
};
 
class b {
    int b = 0;
    int c = 0;
};
 
int main(void) {
    a s;
    b t;
    s.k = 20;
    s.s = 20;
    t.b = 10;
    t.c = 10;
}
cs

struct와 class의 차이를 알수있는 예제입니다.

이걸 비주얼 스튜디오에 쓸경우 오류가 발생할겁니다. 클래스안에 있는 변수의 값을

바꿀수 없죠? 여기서 알 수 있듯이 struct는 public이라는 속성을 갖고 있어서 값을 바꿀수 있지만 class는 private라는 속성을 가지고 있어서 값을 바꿀수 없습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
using namespace std;
 
struct a { //struct는 기본 적으로 public 속성을 가지고 있습니다
    int k = 10;
    int s = 0;
};
 
public b {
    int b = 0;
    int c = 0;
};
 
int main(void) {
    a s;
    b t;
    s.k = 20;
    s.s = 20;
    t.b = 10;
    t.c = 10;
    cout << s.k << " " << s.s << endl;
}
cs

위의 예제는 class를 public으로 바꿔서 값을 넣을수 있습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
 
using namespace std;
 
struct a { //struct는 기본 적으로 public 속성을 가지고 있습니다
private:
    int k = 10;
    int s = 0;
};
 
public b {
    int b = 0;
    int c = 0;
};
 
int main(void) {
    a s;
    b t;
    s.k = 20;
    s.s = 20;
    t.b = 10;
    t.c = 10;
    cout << s.k << " " << s.s << endl;
}
cs

위의 예제는 struct안에 private를 넣어 struct안에 변수의 값을 바꿀수 없습니다.


p.s 사용자들에게 일부 속성은 보호하면서 일부 속성에게 접근할수 있는 인터페이스를 만드는것을 캡슐화라고 합니다


캡슐화는 객체의 3개의 속성중 하나입니다.