const

😎·2022년 11월 28일
0

CPP

목록 보기
6/46

const

42서울에서 제공하는 const 영상을 봤다. 다른 영상에 비해 듣기가 어려워서... 디테일하게 기록은 어려울 것 같다. 간단하게 기록하고, 차차 공부를 더 해나가는 것으로...!


C 에서는 다음과 같은 상황에서 에러를 출력한다.

int main(void)
{
    int const a;

    a = 1;
    return (0);
}

그래서 다음과 같이 작성을 해줘야한다. 변수 생성과 값 선언을 함께 해야한다.

int main(void)
{
    int const a = 1;

    return (0);
}

C

1. 변수 선언과 동시에 초기화


C++ 에서는 클래스라는 개념이 생겼고, 클래스 내부에서 const 멤버 함수와 멤버 변수를 선언할 수 있다.

여기서 C 와 다른 점은 선언 시 바로 값을 초기화하지 않아도 된다는 것이다. ( 아마... 클래스 선언과 생성자 선언은 메모리 할당 과정이 아니기 때문인 것 같다.(내 생각..!) )

즉, 객체를 생성할 때 함께 값을 초기화하면 된다.

C ++

1. 클래스 생성

2. 생성자에서 값을 대입하는 코드 작성

3. 해당 클래스의 객체를 생성과 함께 값을 초기화하기

(객체를 생성하면서 메모리를 할당하기 때문?)

  • 클래스 생성 __ Sample.class.hpp
#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
  • 생성자에서 값 대입하는 코드 작성 __ Sample.class.hpp
#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;
}
  • 해당 클래스의 객체를 생성과 함께 값을 직접 넣어주기 __ main.c
#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

profile
jaekim

0개의 댓글