객체도 const로 생성하여 상수화할 수 있다.
이때 const 함수가 아닌 함수는 호출할 수 없다.
#include <iostream>
using namespace std;
class Simple {
int num;
public :
Simple(int n) : num(n) {}
void add(int n) {
num += n;
}
void showData() const {
cout << "num : " << num << endl;
}
};
int main() {
const Simple obj(7);
// obj.add(3); // const 함수가 아니기 때문에 호출할 수 없다.
obj.showData();
return 0;
}
함수 오버로딩의 조건은 다음과 같다고 설명하였다.
void showData() { ... }
void showData() const { ... }
#include <iostream>
using namespace std;
class Simple {
int num;
public :
Simple(int n) : num(n) {}
void add(int n) {
num += n;
}
void showData() {
cout << "showData() 호출 " << endl;
cout << "num : " << num << endl;
}
void showData() const {
cout << "showData() const 호출 " << endl;
cout << "num : " << num << endl;
}
};
int main() {
Simple obj1(10);
const Simple obj2(5);
obj1.showData();
obj2.showData();
return 0;
}
const 객체에서는 const 함수가 실행이 된다.