Programming/C++ STL2013. 3. 4. 23:15
class는 struct 에서 함수를 포함하는 개념인데
물론, class안에서 함수를 선언할수 있지만 확실히 보기 쉽지 않아지는게 문제이니
되도록이면 class 안에는 prototype만 선언하고 class 밖에서 함수 본체를 만들어 주는게 나을 듯하다.

class CRectangle {
int *width, *height;
public:
CRectangle (int,int);
void ~CRectangle ()
{
delete width;
delete height;
}
int area () {return (*width * *height);}
};

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

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

1. 생성자/소멸자는 리턴형이 존재하지 않는다.
    error C2577: 'CRectangle' : 소멸자은(는) 반환 형식을 가질 수 없습니다.
    error C2533: 'CRectangle::{ctor}' : 생성자에서 반환 형식을 사용할 수 없습니다.

2. class 안에 함수를 넣어도 무방하다
class name {
    function_name() { /* function content */ } 
    function_prototype(); 
}

return_type name::function_prototype()
{

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


---
그리고 c++에서 부터는 prototype에 변수의 형만 적고, 변수명을 생략가능해진다.
CRectangle (int,int);
CRectangle::CRectangle (int a, int b) { /* ... */ }

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

상속시 public, private 키워드는 하나씩만 적용된다  (0) 2013.03.11
c++ function overloading  (2) 2013.03.04
c++ namespace  (0) 2013.03.04
c++ class와 struct  (0) 2013.03.03
c++ cout 제어하기  (0) 2013.02.15
Posted by 구차니