scriptplay330 다중 상속 #include #include "case1.h"#include "case2.h"#include "case3.h" using namespace std; // 다중상속은 정말 필요하지 않으면 사용하지 말자int main(){ case1::Derived d1; // 어떤 부모의 것을 호출해야할지 모호하다 //d.foo(); //d.m; d1.BaseA::foo(); d1.BaseA::m; d1.BaseB::foo(); d1.BaseB::m; cout 2020. 11. 27. private, protected 상속 #include #include #include using namespace std; class Shape{}; // Shape - Rectangle : is-a 관계class Rectangle : public Shape{}; // Queue - vector : has-a 관계class Queue0{private: vector v;public: void push(int value) { v.push_back(value); } void pop() { v.pop_back(); } int top() { return v.back(); }}; // public 상속은 vector의 모든 인터페이스를 public으로 상속한다.// private 상속은 vector의 모든 인터페이스를 private으로 상속한다.// .. 2020. 11. 27. 추상 클래스, 순수 가상 함수 #include using namespace std; // 추상 클래스// 순수 가상함수만 존재하기 때문에 인터페이스라고 볼 수 있음class Shape{public: virtual double getArea() const = 0; virtual ~Shape() {}}; class Circle : public Shape{private: double _radius; public: Circle(double radius) : _radius(radius) {} virtual double getArea() const override { return _radius * _radius * 3.14; }}; class Rectangle : public Shape{private: double _width; double _.. 2020. 11. 27. 정적 결합, 동적 결합 #include #include "Animal.h" using namespace std; class A{public: int num;}; class B : public A{}; A operator+(const A& x, const A& y){ A a; a.num = x.num + y.num; return a;} B operator+(const B& x, const B& y){ B b; b.num = x.num * y.num; return b;} void func(int x) // 컴파일 시 함수 이름이 변경 name mangling, 정적 결합{} void func(int x, int y) // 컴파일 시 함수 이름이 변경 name mangling, 정적 결합{} void foo(Animal* anima.. 2020. 11. 27. 가상 함수 #include #include "Character.h" using namespace std; class Base{public: virtual void virtualFunc() { cout 2020. 11. 27. 상속의 기본 #include using namespace std; class Base{public: Base() { cout 2020. 11. 27. 이전 1 ··· 20 21 22 23 24 25 26 ··· 55 다음