42서울에서 제공하는 const 영상을 봤다. 다른 영상에 비해 듣기가 어려워서... 디테일하게 기록은 어려울 것 같다. 간단하게 기록하고, 차차 공부를 더 해나가는 것으로...!
C 에서는 다음과 같은 상황에서 에러를 출력한다.
int main(void)
{
int const a;
a = 1;
return (0);
}
그래서 다음과 같이 작성을 해줘야한다. 변수 생성과 값 선언을 함께 해야한다.
int main(void)
{
int const a = 1;
return (0);
}
C++ 에서는 클래스라는 개념이 생겼고, 클래스 내부에서 const 멤버 함수와 멤버 변수를 선언할 수 있다.
여기서 C 와 다른 점은 선언 시 바로 값을 초기화하지 않아도 된다는 것이다. ( 아마... 클래스 선언과 생성자 선언은 메모리 할당 과정이 아니기 때문인 것 같다.(내 생각..!) )
즉, 객체를 생성할 때 함께 값을 초기화하면 된다.
(객체를 생성하면서 메모리를 할당하기 때문?)
#ifndef SAMPLE_CLASS_HPP
# define SAMPLE_CLASS_HPP
class Sample {
public:
float const pi;
int qd;
Sample(float const f);
~Sample(void);
void bar(void) const;
};
#endif
#include <iostream>
#include "Sample.class.hpp"
Sample::Sample( float const f ) : pi( f ), qd( 42 ) {
std::cout << "Constructor called" << std::endl;
return;
}
Sample::~Sample( void ) {
std::cout << "Destructor called" << std::endl;
return;
}
void Sample::bar( void ) const {
std::cout << "this->pi = " << this->pi << std::endl;
std::cout << "this->qd = " << this->qd << std::endl;
return;
}
#include "Sample.class.hpp"
int main(void) {
Sample instance(3.14f);
instance.bar();
return 0;
}
참고는 했지만,,, 100% 이해는 못한 자료
https://ansohxxn.github.io/cpp/chapter8-9/
https://boycoding.tistory.com/252