티스토리 뷰

C++

[C++] 5. const

JH_ 2021. 11. 2. 11:59

변수에 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
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday