OOP 썸네일형 리스트형 윤성우의 열혈 C++ chpt 13. 가상 소멸자(Virtual Destructor)class First{ ...public: virtual ~First() { ... }};class Second: public First{ ...public: virtual ~Second() { ... }};class Third: public Second{ ...public: virtual ~Third() { ... }};int main(void){ First *ptr = new Third(); delete ptr; ...}위 코드에서 클래스의 소멸자에 virtual 이 명시된 것을 볼 수 있다.만약 virtual 명시가 없을 경우, 생성자와는 다르게 소멸자는 타입으로 설정된 Fisrt 의 소멸자만 호출된다.그.. 더보기 윤성우의 열혈 C++ chpt 12. 가상함수업캐스팅 돌아보기 C++ 컴파일러는 포인터 연산의 가능성 여부를 판단할 때, 포인터의 자료형을 기준으로 판단하지,실제 가리키는 객체의 자료형을 기준으로 판단하지 않는다class Base{public: void BaseFunc() { cout class Derived : public Base{public: void DeriveFunc() { cout int main(void){ Base *bptr = new Derived(); // 컴파일 ok bptr->DerivedFunc(); // 컴파일 error ...}----------------------------------------------------------------------int main(void){ Ba.. 더보기 C++ chpt9. 복사생성자// C 없음-------------------------------------------------------------------------// JAVA없음--------------------------------------------------------------------------// C++// Vector.hclass Vector{pubilc: Vector(const Vector& other);private: int mX; int mY;};// Vector.cppVector::Vector(const Vector& other) : mX(other.mX) , mY(other.mY){}// other 는 같은 클래스로 구현된 다른 개체로, 동일한 클래스에 있기 .. 더보기 C++ chpt8. const 멤버 함수// Vector.hclass Vector{public: void SetX(int x); void SetY(int y); int GetX() const; int GetY() const; void Add(const Vector& other);private: int mX; int mY;}; const 란?바꿀 수 없는 것// const 변수cosnt int LINE_SIZE = 20;LINE_SIZE = 10; // 컴파일 에러----------------------------------------------------------// const 메서드. 해당 개체 내부에서 해당 함수를 통해 접근할 경우 어떠한 것도 바꿀 수 없음int GetX() co.. 더보기 윤성우의 열혈 C++ chpt6. 생성자의 이해C에선 변수 사용시 선언과 동시에 초기화를 하거나 필요시 선언 후 값을 대입하는 과정을 사용했음또는 객체 프로그래밍에서 '생성자라는 개념없는 전제'에선별도의 함수를 호출을 통해 객체의 해당 멤버 변수의 값을 대입 시켜주는 행위로 변수의 값을 설정해줄 수 있음 객체 프로그래밍에서 객체의 멤버 변수를 함수로 값을 설정해준다면선 선언/후 대입이라는 매번 별도로 값을 대입해줘야 되는 행위의 불편함이 존재하며, 이 불편함을 매 사용시마다 겪어야함 이걸 정리 해주는 즉, 객체 멤버 변수의 생성과 초기화를 동시에 자동으로 처리할 수 있게 해주는 함수가 '생성자' 함수 생성자는 객체가 생성될 때 자동으로 호출되는 것으로(반대로 객체가 소멸될 때 자동으로 호출되는 것은 소멸자라고 한다) C++ 의 생성자는.. 더보기 C++ chpt6. 개체지향 프로그래밍(OOP: Object-Orieted Programming)JAVA vs C++ JAVA클래스개체생성자함수 오버로딩힙에 개체 생성하기C++클래스개체생성자함수 오버로딩힙에 개체 생성하기스택에 개체 생성하기복사 생성자소멸자연산자 오버로딩C++ 에서는 OOP 와 OOP 가 아닌 것을 섞어 쓸 수 있음 (C 와의 호환성)C++ 은 언매니지드 언어이기 때문에 매니지드언어인 JAVA 에 없는 특별한 기능이 많음 OOP 란 뭘까?'사람들이 세상을 바라보는 방식' 직관적다음 이미지는 '사람' 을 예시로 들 때, 사람이 가지는 데이터나 행위에 대해 예를 든 것이다위 예시를 아래처럼 코드화하는 것이 OOP 의 방식이다.// JAVA 클래스public class Human{ private stri.. 더보기 윤성우의 열혈 C++ chpt5. 정보 은닉의 이해class point{public: int x; // x좌표의 범위는 0 이상 100 이하 int y; // y좌표의 범위는 0 이상 100 이하 // 정보 은닉 실패};class Rectangle{public: Point upLeft; Point lowRight; // 정보 은닉 실패public: void ShowRecInfo() { cout 예제에서 보이듯이 멤버변수의 외부접근을 허용하면, 잘못된 값이 저장되는 문제가 발생할 수 있다. 따라서 멤버변수의 외부접근을 막게 되는데, 이를 가리켜 '정보은닉'이라 한다. Point의 멤버변수에는 0~100 이외의 값이 들어오는 것을 막는 장치가 없고,Rectangle의 멤버변수에는 좌우 .. 더보기 윤성우의 열혈 C++ chpt4. C++ 에서의 구조체구조체의 등장 배경연관 있는 데이터를 하나로 묶으면 프로그램의 구현 및 관리가 용이구조체는 연관 있는 데이터를 하나로 묶는 문법정 장치연관 있는 데이터들은 생성 및 소멸의 시점이 일치하고, 이동 및 전달의 시점 및 방법이 일치하기 때문에 하나의 자료형으로 묶어서 관리하는 것이 용이하다. C++ 에서의 구조체 변수 선언// C 구조체 변수 초기화struct Car basicCar;struct Car simpleCar;-------------------------------------// C++ 구조체 변수 초기화Car basicCar;Car simpleCar;C++ 에서는 구조체 변수 선언시 struct 키워드의 생략을 위한 typedef 선언이 불필요 struct Car{ ch.. 더보기 이전 1 2 다음