struct가 변수만 모아놓을수 있었다면
class는 struct에서 확장되어 함수까지 포함하는 개념이다.
단, c++에서 struct로도 함수를 포함해 선언할 수 있지만 class member가 public으로 선언되고
class로 선언시에는 private로 선언되는 차이가 있다고 한다.
[링크 : http://www.dal.kr/chair/cpp/cpp313.html ]
class의 접근제어는
로 만들어 지며
식으로 접근을 제어할 수 있다.
단, 기본적으로 private로 되고 선언된 아래로는 끝까지 이어지니 구획을 구분해서 쓰는게 용이하고
private는 위에서 서술하였지만, 기본적으로 설정이 되니 일반적으로는 public: 만 명시적으로 사용한다.
물론 constructor / destructor 도 강제로(?) private로 만들수는 있지만
그럼 그걸 어떻게 쓸래? 라는 문제가 발생하니 생성자와 파괴자는 public: 으로 선언하자
[링크 : http://www.cplusplus.com/doc/tutorial/classes/ ]
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++ cout 제어하기 (0) | 2013.02.15 |
c++ inheritance(상속) (0) | 2013.02.15 |
c++ template (0) | 2013.02.15 |