함수 뒤에 const 코스메틱 추가

1871 단어
우리는 몇몇 함수 뒤에 키워드const가 있는 수식을 자주 볼 수 있다.그럼 const는 여기서 무슨 뜻인가요?사실 이 const는 함수에 대한 한정으로 클래스 내의 데이터 구성원을 수정할 수 없습니다.const는 다른 사람에게 이 함수는 대상의 상태를 바꾸지 않는다고 알려준다.하나의 함수를 설명하려면 const 키워드로 이 함수가 읽기 전용 함수 (read only method) 라는 것을 설명합니다. 즉, 데이터 구성원을 수정하지 않고 대상의 상태를 바꾸지 않습니다.이 함수의 성명과 정의는 const 키워드를 붙여야 합니다.데이터 구성원을 수정하지 않는 함수는const 형식으로 표시해야 합니다.만약 우리가 const 함수를 작성할 때 데이터 구성원을 실수로 수정하거나 다른 비const 구성원 함수 (즉 데이터 구성원의 함수를 수정하는 것) 를 호출한다면 컴파일러는 오류를 보고할 것이다.이것은 의심할 여지없이 우리가 쓴 코드를 더욱 건장하게 한다.다음 양쪽 코드를 보십시오: 잘못된 쓰기:
#include 
using namespace std;
class Person
{
public:
    Person(int age);
    void setAge(int age);
    int getAge() const;
private:
    int age;
};

Person::Person(int age){
    this->age = age;
}

void Person::setAge(int age){
    this->age = age;
}

int Person::getAge() const{
    this->age = 23;      // wrong: want to modify data member, the compiler will report error
    return this->age;
}
int main(){
    Person person(13);
    cout << person.getAge() << endl;
    person.setAge(23);
    cout << person.getAge() << endl;
}

컴파일러가 보고한 오류:
Cannot assign to non-static data member within const member function 'getAge'

올바른 쓰기:
#include 
using namespace std;
class Person
{
public:
    Person(int age);
    void setAge(int age);
    int getAge() const;
private:
    int age;
};

Person::Person(int age){
    this->age = age;
}

void Person::setAge(int age){
    this->age = age;
}

int Person::getAge() const{
    return this->age;
}

int main(){
    Person person(13);
    cout << person.getAge() << endl;
    person.setAge(23);
    cout << person.getAge() << endl;
    return 0;
}

실행 결과:
13
23
Program ended with exit code: 0

좋은 웹페이지 즐겨찾기