살군의 보조기억 장치

Another memory device…

const 멤버 함수

leave a comment »

정의 방법 : const 멤버 함수를 선언하려면, 단순히 함수의 param을 정의하는 괄호 다음에 const 라는 키워드를 붙여주면 된다.

class Csurface {

protected:

BOOL visible;

BOOL isVisible() const

{return visible;}

void makeVisible(BOOL onoff) {visible = onoff;);

};

isVisible() 은 멤버변수를 변경시키지 않고 단지 그 값만을 리턴하므로 const 로 선언될 수 있다. 또한 이렇게 하는 것이 바람직하다.

const 멤버 변수가 가지는 다른 특징은 const형 클래스 오브젝트에 사용될 경우를 볼 수 있다. 만일 클래스 오브젝트 자체를 const로 선언하면 자신의 멤버변수가 일단 초기화 되면 추후에 그 내용을 다시 바꿀 수 없다고 약속하는 것이므로 멤버 함수를 써서 멤버 변수 값 자체를 변경시키는 작업이 불가능하다. 따라서 const 클래스 오브젝트에는 오직 const 멤버 함수만 호출이 가능해진다.

main() {

const Csurface triangle;

BOOL bShown;

triangle.makeVisible(TRUE); // error. const가 아닌 멤버함수는 호출할 수 없다.

bShown = triangle.isVisible(); // OK. const 멤버함수 호출가능

}

물론 위의 경우에는 Csurface의 생성자가 visible 멤버 변수를 초기화했으리라고 가정하고 있다.

const 멤버 함수의 경우 멤버 변수의 값 자체를 변경시키는 것이 불가능하지만, 멤버변수가 포인터인 경우 그 포인터가 가리키는 내용을 포인터를 사용하여 변경시키는 것은 가능하다. 이것은 const 인 것이 포인터 자체이지 포인터가 가리키는 값이 아닌경우 이기 때문이다.

출처 : Windows로 배우는 C++, 한수찬 지음, 교학사

Advertisements

Written by gomiski

2010/06/23 at 7:35 am

Posted in Embedded, Lecture

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: