#include <iostream>
using namespace std;
void func(const int);
int main(){
func(10);
return 0;
}
void func(const int n){
for(int i=1; i<=n; i++)
cout << i << endl;
}
func() 함수의 매개변수 n을 const로 받으면 함수 내용 안에 n값을 수정할 수 없게 된다!
<coord.h>
#include <iostream>
using namespace std;
class Coord{
private:
int x, y;
public:
Coord();
Coord(int, int);
void setX(int);
void setY(int);
int getX()const;
int getY()const;
void print()const;
};
<coord.cpp>
#include "Coord.h"
Coord::Coord():x(0),y(0){
}
Coord::Coord(int x1, int y1):x(x1),y(y1){
}
void Coord::setX(int x1){
x = x1;
}
void Coord::setY(int y1){
y = y1;
}
int Coord::getX()const{
return x;
}
int Coord::getY()const{
return y;
}
void Coord::print()const{
cout << "(" << x << ", " << y << ")" << endl;
}
const키워드를 저곳에 붙이면, 이 함수는 멤버 변수의 값을 수정하지 않는다뜻!
실제로 저런 함수에서는 멤버 변수의 값을 수정할 수 없다. -> const형 object에서는 저런 함수들을 부를 수 있어서 필요한 것이다!!
#include <iostream>
#include "Coord.h"
using namespace std;
const Coord add(const Coord, const Coord);
int main(){
Coord A(2, 3);
Coord B(-1, 0);
A.print();
B.print();
(add(A, B)).print();
return 0;
}
const Coord add(const Coord P, const Coord Q){
int x1 = P.getX() + Q.getX();
int y1 = P.getY() + Q.getY();
Coord temp(x1, y1);
return temp;
}
매개변수, 반환형이 const인 경우에도 const키워드를 넣어준 함수를 부를 수 있게 되었다!
const 처리된 object에서 setX() 같은 함수는 부를 수 없다..
정리하면,
- const처리된 멤버 함수 안에서 역시 자신의 멤버 함수를 부르는 데 제한이 생긴다.
- 설령 내용 중 멤버 변수값을 바꾸는 것이 없어도, const처리하지 않으면 const형 object를 부를 수 없다.