티스토리 뷰
변수에 const를 사용하면 상수의 의미를 갖게 하여 변수값을 변경할 수 없게 함
const int x=1;
int const y=2;
const int z{3};
constexpr int a=4;
함수에서 const를 사용하면 함수, 매개변수, 리턴형이 읽기 전용임을 나타냄
void func(const int); → 매개변수가 const
const double func(int) → 리턴값이 const (&를 리턴하는 경우)
void func(void) const; → 함수가 const (멤버변수를 변경하지 않는 함수)
const 멤버 특징
1) const형 멤버함수는 해당 멤버변수를 변경할 수 없음
2) const형 멤버함수는 const함수만 호출할 수 있음
3) 생성자와 소멸자에 사용 못 함
4) 멤버변수는 자료형 앞에, 멤버함수는 괄호 다음에 씀
▶ 4) 예시
class Man
{
const int age;
int getAge() const;
};
int Man::getAge() const {return age;}
▶ 1), 2) 확인 문제
#include <iostream>
class Man {
int age;
public:
int getAge() const;
void setAge(int a) { age = a; }
void view() { std::cout << "view"; }
};
int Man::getAge() const
{
view(); // 오류 ① const형 함수만 쓸 수 있음
return (age++); // 오류 ② 멤버변수를 변경할 수 없음
}
int main()
{
Man Lee;
Lee.setAge(5);
std::cout << Lee.getAge();
return 0;
}
const 객체
1) 객체가 const로 지정되면 변경할 수 없고, const 멤버함수만 호출 가능
2) 객체는 클래스명 앞에 씀
▶ 확인 문제
#include <iostream>
class Man {
int age;
public:
Man (int a) { age = a; }
int getAge() const { return age; }
void setAge(int a) { age = a; }
};
int main()
{
const Man Lee(5); //const 객체
Lee.setAge(7); // 오류: 초기화된 객체를 변경할 수 없음
std::cout << Lee.getAge();
return 0;
}
'C++' 카테고리의 다른 글
[C++] 8. 연산자 오버로딩 (0) | 2021.11.16 |
---|---|
[C++] 7. 함수 오버로딩과 디폴트 매개변수 (0) | 2021.11.09 |
[C++] 4. 생성자와 소멸자 (0) | 2021.10.19 |
[C++] 2. 클래스와 객체 만들기 (0) | 2021.10.12 |
[C++] 1. 객체 지향 언어 (0) | 2021.10.04 |
댓글