C++ 썸네일형 리스트형 윤성우의 열혈 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++ chpt 11. protected 선언과 세가지 형태의 상속 protected 로 선언된 멤버가 허용하는 접근의 범위class Base{private: int num1;protected: int num2;public: int num3; void ShowData() { cout class Derived : public Base{public: void ShowBaseMember() { cout protected 는 private 와는 달리 상속관계에서의 접근을 허용해준다. [ 세 가지 형태의 상속 ]class Derived : public Base{ ...}public 상속 접근 제어 권한을 그대로 상속한다.단, private 은 접근불가로 상속한다.class.. 더보기 윤성우의 열형 C++ chpt.10 상속 상속의 내용을 다루기 전 다음과 같은 코드를 살펴보자 Theme : 급여관리 - 데이터 중심적 클래스class PermanentWorker{private: char nam[100]; int salary; 매달 지불해야 하는 급여액pubilc: permanentVorker(char *name, int money) :salary(money) { strcpy(thie->name, name); } int GetPay() const { return salary; } void ShowSalaryInfo() cosnt; { cout - 행위 중심적 클래스class EmployeeHandler{ // 프.. 더보기 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++ chpt9. const 보충 내용class SoSimple{private: int num;public: SoSimple(int n) : num(n) {} SoSimple& AddNum(int n) { num += n; return *this; } void ShowData() const { cout const 와 함수 오버로딩class SoSimple{private: int num;public: SoSimple(int 3) : num(n) {} SoSimple& AddNum(int n) { num += n; return *this; } void SimpleFunc() { .. 더보기 윤성우의 열혈 C++ chpt8. 복사생성자class{private: int num1 int num2;public: SoSimple(int n1, int n2) : num1(n1), num2(n2) {} void ShowSimpleData() { cout 묵시적 생성자 호출이 일어나서 생성자를 호출할 수 있게 된다. SoSimple sim2 = sim1;대입연산의 의미처럼 실제 멤버 대 멤버의 복사가 일어남 코드를 자세히 보면 SoSimlpe 객체에 복사 생성자를 호출하는T (T &obj)복사생성자 구조가 없는 것을 볼 수 있다. 복사생성자 역시 정의되지 않는다면 Default 복사 생성자가 생성되어 처리하게 해준다. 그런 이유로 객체에 복사생성자가 명시되지 않는 객체를 초기화하려고 객체를 .. 더보기 이전 1 2 3 다음