Programming/C++ STL2013. 3. 3. 23:48
struct가 변수만 모아놓을수 있었다면
class는 struct에서 확장되어 함수까지 포함하는 개념이다.

단, c++에서 struct로도 함수를 포함해 선언할 수 있지만 class member가 public으로 선언되고
class로 선언시에는 private로 선언되는 차이가 있다고 한다.
[링크 : http://www.dal.kr/chair/cpp/cpp313.html ]

class의 접근제어는
public:
private:
protected: 
로 만들어 지며

class testclass
{
private:
    int priv_a;

public:
    int pub_a;

private:
    int priv_b;
식으로 접근을 제어할 수 있다.
단, 기본적으로 private로 되고 선언된 아래로는 끝까지 이어지니 구획을 구분해서 쓰는게 용이하고
private는 위에서 서술하였지만, 기본적으로 설정이 되니 일반적으로는 public: 만 명시적으로 사용한다.

물론 constructor / destructor 도 강제로(?) private로 만들수는 있지만
그럼 그걸 어떻게 쓸래? 라는 문제가 발생하니 생성자와 파괴자는 public: 으로 선언하자

using namespace std;

class CRectangle {
int width, height;
CRectangle (int,int);

public:
int area () {return (width*height);}
};

CRectangle::CRectangle (int a, int b) {
width = a;
height = b;
}

int _tmain(int argc, _TCHAR* argv[])
{
CRectangle rect (3,4);
CRectangle rectb (5,6);
cout << "rect area: " << rect.area() << endl;
cout << "rectb area: " << rectb.area() << endl;
return 0;
}

cpp_console.cpp(25) : error C2248: 'CRectangle::CRectangle' : private 멤버('CRectangle' 클래스에서 선언)에 액세스할 수 없습니다.
cpp_console.cpp(11) : 'CRectangle::CRectangle' 선언을 참조하십시오.
cpp_console.cpp(9) : 'CRectangle' 선언을 참조하십시오.
cpp_console.cpp(26) : error C2248: 'CRectangle::CRectangle' : private 멤버('CRectangle' 클래스에서 선언)에 액세스할 수 없습니다.
cpp_console.cpp(11) : 'CRectangle::CRectangle' 선언을 참조하십시오.
cpp_console.cpp(9) : 'CRectangle' 선언을 참조하십시오. 

[링크 : http://www.cplusplus.com/doc/tutorial/classes/ ]

'Programming > C++ STL' 카테고리의 다른 글

c++ class member function  (0) 2013.03.04
c++ namespace  (0) 2013.03.04
c++ class와 struct  (0) 2013.03.03
c++ cout 제어하기  (0) 2013.02.15
c++ inheritance(상속)  (0) 2013.02.15
c++ template  (0) 2013.02.15
Posted by 구차니

댓글을 달아 주세요