Class(클래스)

헤더파일을 작성시에 #ifndef ~ #endif 를 이용하여 중복으로 삽입되는 것을 막자.

Aaa.h

#ifndef AAA_H_INCLUDE
#define AAA_H_INCLUDE
..
..source
..
#endif

#ifndef 는 해당 매크로정의(#define)가 존재하는지 검사한다.
존재한다면 이미 삽입된것으로 간주하고 넘어가기 때문에 중복으로 삽입되는 것을 방지할 수 있다.
하지만 매크로정의는 유일키를 사용해야함을 주의하자.


const 으로 선언된 클래스의 객체는 const 맴버함수만 접근할 수 있다.


....
class ClassA{
...
public :
int getValue() const{......}
void methodB(){.....}

.....
};
메소드의 const 의미는 이 메소드는 맴버변수를 수정하지 않는다는 것을 명시하는것이다.
만약 const으로 정의된 메소드에서 맴버변수를 수정하게되면 오류가 발생한다.

이와 관련되어 ClassA 를 const으로 선언하면 알아야 할것이 있다.
const ClassA a;

a.getValue();   // 1
a.methodB();  // 2

1번은 성공하지만 2번은 오류다.
클래스를 const 으로 선언하면 const 으로 선언된 메소드만 접근이 가능하다.


 C++ 의 생성자 선언


class ClassA{
....
public : 또는 private :
ClassA(){
....
}

}

1. 다중정의 가능
2. 생성자는 클래스명과 동일
3. 반환자료형 미표시
4. return 값이 없음
5. 클래스를 정의 할때 생성자가 자동으로 호출됨 (기본 생성자에 한하여.)


맴버변수는 초기화 리스트로 초기값을 설정 할 수 있다.(특히 상수의 초기화)

class ExClass{
int a;
const int b;
public:
ExClass(int param) :a(param), b(param+4) {
}
 
}


위의 생성자에서 사용하는것이 초기화 리스트이다.
특히 b라는 맴버변수는 상수이므로 선언시에 초기화를 하거나 저런식으로 초기화 리스트에서 초기화를 할수 있다.



소멸자 : 소멸자는 객체가 소멸될때 자동으로 실행되는 함수다.
class TestClass{
...
public:
virtual ~TestClass(){

}
}
1. 클래스와 동일한 이름을 가진다.
2. ~ 이 붙는다.
3. 값을 반환하지 않는다.
4. 매개변수를 받을 수 없다.
5. 다중정의를 할수 없다.
6. virtual 은 자식클래스가 파생될때를 대비하여 붙이는게 좋다.(반드시는 아니다.)
7. 접근제한자는 public 으로 해야 한다.



'언어 > C/C++' 카테고리의 다른 글

(오류) syntax error : missing ';' before 'using'  (0) 2010.06.19
const 인수  (0) 2010.06.15
참조 변수  (0) 2010.06.15
동적 메모리 할당 및 반환  (0) 2010.06.15
포인터  (0) 2010.06.15