본문 바로가기

객체지향5

[C++] 생성자(Constructor) 소멸자(Destructor) 생성자 객체가 생성되면서 멤버변수의 초기화나 멤버함수를 호출하는 등 사전에 필요한 준비작업을 하는 함수 입니다. 1. 반환 형은 없다. 2. 클래스 이름과 동일하게 선언을 한다. 3. 외부의 값으로 멤버변수를 초기화 해야할 경우 매개변수를 가진 생성자를 재정의(오버로딩) 할 수도 있다. 쉽게 말하자면 우리가 변수를 초기화 하듯이 객체가 생성됨과 동시에 객체를 초기화 시켜주는 역할을 합니다. 그런데 이전 포스팅들을 보면 생성자가 정의되어 있지 않음에도 불구하고 에러없이 잘 돌아가는데 그건 컴파일러가 기본생성자를 만들어서 호출하기 때문입니다. 만약 오버로딩된 생성자를 정의 한다면 기본생성자는 컴파일러가 만들어주지 않습니다. 따라서 기본생성자도 구현을 해줘야 하죠. //.h class CBase { publi.. 2020. 7. 19.
[C++] 업 캐스팅(up casting) & 다운 캐스팅(down casting) 포인터는 왜쓰고 업&다운 캐스팅은 뭘까요? 설명에 앞서 저는 업캐스팅을 이해하려면 포인터부터 알아야 한다고 생각합니다. 해서 포인터부터 설명을 드리겠습니다. 학창시절 포인터는 C에서 배웠지만 그냥 해당 타입의 메모리 주소를 저장 및 참조(접근)하는 그런건가 보다~ 하고 넘겼었고 업&다운 캐스팅은 왜 쓰는지 도무지 감이 안잡혔었습니다. 그래서 서적이나 블로그 등 많이 찾아봤지만 이 질문에 대한 명확한 답을 찾기가 어려웠습니다. 많은 분들이 저와 같은 고민을 했으리라 생각합 아니 하고 싶습니다^^.. 때문에 제가 아는 선에서 여러분에게 최대한의 이해를 돕고자 포스팅을 하게 되었습니다. 그리고 "C++ 클래스에 대한 이해 - 다형성"를 읽는데 도움이 되실겁니다. 서두가 길었습니다. 시작하시죠 먼저 포인터란 주.. 2020. 7. 6.
[C++] 객체지향과 클래스에 대해 - 다형성(Polymorphism) 이전 포스팅의 상속(Inheritance)에서 모바일 핸드폰을 예시로 들었는데요..! 파생클래스가 기본클래스의 기능을 포함하는 형태로 확장되는 것이라고 말씀드렸습니다. 동시에 파생클래스는 기본클래스 멤버를 자기자신으로 가져오는 것이 아니라 각각의 영역을 지키고 있다고 했습니다. 그럼 파생클래스 객체가 기본클래스가 가지고 있는 멤버함수를 커스터마이징을 하고 싶다면 어떻게 할까요?가령 전화기능을 사용하기 위해서 스마트폰 이전 세대의 모바일핸드폰은 물리적인 자판을 통해 번호를 입력합니다. 그런데 스마트폰은 디스플레이에 나타나는 가상의 키보드를 사용하구요. 입력 방식에 대한 차이가 드러납니다. 여기서 키포인트번호를 입력하는 함수가 기본클래스에 정의되어 있다고 가정 합시다. 그 기본클래스를 상속 받은 스마트폰이라.. 2020. 6. 26.
[C++] 객체지향과 클래스에 대해 - 상속(Inheritance) 앞선 포스팅의 접근지정자 public, private을 캡슐화(Encapsulation)과 함께 설명했는데요. 오늘 포스팅은 나머지 하나. protected에 대해 설명하겠습니다. 근데 protected를 이해하기 전에 상속(Inheritance)이란 개념을 반드시 알고 넘어가야 합니다. 상속은 객체지향 특성 4가지 중 하나로, 나머지 특성이면서 가히 C++의 꽃이라 할 수 있는 다형성(Polymorphism) 실현에 필수적인 요소이기 때문입니다. 뿐만 아니라 클래스 간의 계층적 분류를 통해 관리 및 재사용을 용이하게 할 수 있는데 이는 소프트웨어의 생산성을 향상시킬 수 있습니다. 상속이란 클래스를 정의할 때 어떤 클래스를 확장하여 파생하는 걸 말합니다. 그러면 기본클래스(부모클래스), 파생클래스(자식클.. 2020. 6. 20.