이런 방식으로 사용하기도 합니다.
-----------------------------------------------------------------
변경자 데이터형 기능( 인자값 ) 변경자 오버로딩. 오버라이딩. 상속;
-----------------------------------------------------------------
const bool operator() (...)은 const bool 형식으로 값을 반환하는 함수이고,
bool operator() (...)은 bool 형식으로 값을 반환하는 함수입니다.
bool operator() const (...)은 여전히 bool 형식으로 값을 반환하지만 함수 내부에서 객체의 값을 수정할 수 없습니다.
const bool operator() const (...)은 const bool 형식으로 값을 반환하지만 함수 내부에서 객체의 값을 수정할 수 없습니다.
// test.cpp
class A
{
public:
void ConstFunc() const {} // 상수 멤버함수
void NonConstFunc() {} // 비상수 멤버함수
const bool operator() (int input) { // 상수를 반환하는, 비상수 멤버함수
return input > 0;
}
bool operator() () const { // 비상수를 반환하는, 상수 멤버함수
ConstFunc(); // OK
NonConstFunc(); // compile error
return true;
}
};
int main()
{
A a;
int i1 = a(10);
int i2 = a(10)++; // error
}
$ g++ test.cpp
test.cpp: In member function ‘bool A::operator()() const’:
test.cpp:15:22: error: passing ‘const A’ as ‘this’ argument of ‘void A::NonConstFunc()’ discards qualifiers [-fpermissive]
test.cpp: In function ‘int main()’:
test.cpp:24:19: error: lvalue required as increment operand
test.cpp:28:18: error: passing ‘const A’ as ‘this’ argument of ‘void A::NonConstFunc()’ discards qualifiers [-fpermissive]
(1) line 24 에서는 "const bool operator() (int)" 함수의 "상수 반환값"을 변경(증가)시키려 했기 때문에 에러가 발생합니다.
(2-1) line 15 에서는 const 로 선언된, "bool operator() () const" 함수가, const 가 아닌 NonConst() 함수를 호출했기 때문에 컴파일 에러가 발생합니다. 어떤 멤버함수가 const 로 선언(함수 제일 뒤에 const 수식어가 있는 경우)되었을 때에는, 해당 함수는 const 함수들만 호출할 수 있기 때문입니다.
(2-2) line 28 에서는 "const A" 로 선언된 ca, 즉 상수 인스턴스에 대해, const 가 아닌 NonConst() 함수를 호출했기 때문에 컴파일 에러가 발생합니다. 상숙 객체에 대해서는, const 로 선언된 멤버함수만 호출할 수 있기 때문입니다.
이것저것 참고해 보세요.
const는 변경자 라고 합니다.
constant 가 상수 입니다.
이런 방식으로 사용하기도 합니다.
-----------------------------------------------------------------
변경자 데이터형 기능( 인자값 ) 변경자 오버로딩. 오버라이딩. 상속;
-----------------------------------------------------------------
Synapse india complain sharing info on chapter 8 operator overloading
http://www.slideshare.net/SynapseindiaComplaints/synapse-india-complain-sharing-info-on-chapter-8-operator-overloading
using cxx::types
http://www.slideshare.net/delongj/using-cxxtypes
QCPColorGradient Class Reference
http://www.qcustomplot.com/documentation/classQCPColorGradient.html
operator const char* () const의 의미를 모르겟습니다.
http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040101&docId=205400686&qb=b3BlcmF0b3IgY29uc3Q=&enc=utf8§ion=kin&rank=1&search_sort=0&spq=0
double CBlobTest::operator()(const CBlob &blob) const
http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040101&docId=142870929&qb=b3BlcmF0b3IgY29uc3Q=&enc=utf8§ion=kin&rank=2&search_sort=0&spq=0
C++ operator 쓸 때 반환형으로 const &를 왜 붙이는 지 궁금합니다. 내공 有
http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040101&docId=67823620&qb=b3BlcmF0b3IgY29uc3Q=&enc=utf8§ion=kin&rank=3&search_sort=0&spq=0
:: 변수(Variable), 상수(const), 연산자(Operator) ::
http://blog.naver.com/tppsc/60013936874
http://cafe.naver.com/boolnim/5473
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
답변
const bool operator() (...)은 const bool 형식으로 값을 반환하는 함수이고,
bool operator() (...)은 bool 형식으로 값을 반환하는 함수입니다.
bool operator() const (...)은 여전히 bool 형식으로 값을 반환하지만 함수 내부에서 객체의 값을 수정할 수 없습니다.
const bool operator() const (...)은 const bool 형식으로 값을 반환하지만 함수 내부에서 객체의 값을 수정할 수 없습니다.
저는 이렇게 생각했습니다.
다음 코드를 참고하세요. //
다음 코드를 참고하세요.
(1) line 24 에서는 "const bool operator() (int)" 함수의 "상수 반환값"을 변경(증가)시키려 했기 때문에 에러가 발생합니다.
(2-1) line 15 에서는 const 로 선언된, "bool operator() () const" 함수가, const 가 아닌 NonConst() 함수를 호출했기 때문에 컴파일 에러가 발생합니다. 어떤 멤버함수가 const 로 선언(함수 제일 뒤에 const 수식어가 있는 경우)되었을 때에는, 해당 함수는 const 함수들만 호출할 수 있기 때문입니다.
(2-2) line 28 에서는 "const A" 로 선언된 ca, 즉 상수 인스턴스에 대해, const 가 아닌 NonConst() 함수를 호출했기 때문에 컴파일 에러가 발생합니다. 상숙 객체에 대해서는, const 로 선언된 멤버함수만 호출할 수 있기 때문입니다.
댓글 달기