get 과 set 으로 private 접근 지정자에 접근하기 __ accessors

😎·2022년 11월 28일
0

CPP

목록 보기
9/46

accessors

우리는 private 속성에 접근하고 싶고, 바꾸고 싶은 상황이 있다.

이럴 때 사용자privite 속성 사이의 인터페이스를 이용할 수 있다.

값을 지정할 때 set, 가져올 때 get 을 함수 앞에 붙여 사용한다.


예시

  • Sample.class.hpp

public 접근 지정자에서 getFoosetFoo 을 선언했다.
private 접근 지정자에 _foo 이름의 변수가 있다.

#ifndef SAMPLE_CLASS_H
# define SAMPLE_CLASS_H

class Sample {

    public:
        Sample(void);
        ~Sample(void);

        int getFoo(void) const;
        void setFoo(int v);

    private:
        int _foo;
};

#endif
  • Sample.class.cpp

getFoosetFoo 함수의 매개 변수를 통해 _foo 의 값을 가져오고 설정하는 함수를 만들었다.

#include <iostream>
#include "Sample.class.hpp"

Sample::Sample(void) {
    std::cout << "Constructor called" << std::endl;
    this->setFoo(0);
    std::cout << "this->getFoo()" << this->getFoo() << std::endl;
    return;
}

Sample::~Sample(void) {
    std::cout << "Destructor called" << std::endl;
    return;
}

int Sample::getFoo(void) const {
    return this->_foo;
}

void Sample::setFoo(int v) {
    if (v >= 0)
        this->_foo = v;
    return;
}
  • main.cpp

실행!

#include <iostream>
#include "Sample.class.hpp"

int main() {
    Sample instance;

    instance.setFoo(42);
    std::cout << "instance.getFoo():" << instance.getFoo() << std::endl;
    instance.setFoo(-42);
    std::cout << "instance.getFoo():" << instance.getFoo() << std::endl;
    return 0;
}

profile
jaekim

0개의 댓글