develop/C++

[씹어먹는 C++ - 4-1, 2] 객체지향 프로그래밍, 함수 오버로딩, 생성자

devdw 2021. 9. 1. 16:07

4-1

객체

변수들과 참고 자료들로 이루어진 소프트웨어 덩어리

추상화

객체가 현실 세계에 존재하는 것들을 나타나기 위해 필요한 과정

캡슐화

인스턴스 메소드를 통해 인스턴스 변수들을 간접적으로 조절하는 것

예시

class Animal {
    private: // 외부에서 접근 불가능한 것들 (생략 가능)
    int food;
    int weight;

    public: // 외부에서 사용가능한 것들
    void set_animal(int _food, int _weight){
        food = _food;
        weight = _weight;
    }
    void increase_food(int inc){
        food += inc;
        weight += (inc / 3);
    }
    void view_stat(){
        std::cout << "이 동물의 food : " << food << std::endl;
        std::cout << "이 동물의 weight : " << weight << std::endl;
    }
}; // 세미콜론!

4-1문제 풀이

4-2

함수 오버로딩

함수의 이름이 같더라도 인자가 다르면 다른 함수라고 판단

생성자

  • 객체 생성 시 자동으로 호출되는 함수
  • 객체 안 변수들을 초기화시켜줌
  • 객체 초기화 역할이기 때문에 반환 값이 없음

디폴트 생성자

클래스 내에 개발자가 어떠한 생성자도 명시적으로 정의하지 않았을 경우 컴파일러가 자동으로 추가해주는 생성자

class Test {
    int a;
    public:
    Test(){ // 디폴트 생성자
        a = 1;
    }
    Test(int a_){
        a = a_;
    }
}

int main()
{
    Test t1();
    Test t2 = Test();
    Test t3(3); // 암시적 방법 (implicit)
    Test t4 = Test(4); // 명시적 방법 (explicit)
}
C++ 11부터 명시적으로 디폴트 생성자를 사용하도록 명시할 수 있음
class Test1 {
    public:
    Test1() = default; // 디폴트 생성자 정의해라
}

4-2 문제 풀이

TODO 해보기