Scribbling

[C++] Abstract Class, Interface, Multiple Inheritance 본문

Computer Science/C++

[C++] Abstract Class, Interface, Multiple Inheritance

focalpoint 2024. 2. 14. 07:18
using namespace std;


class Shape {
public:
	virtual void roar() = 0;
	virtual ~Shape() {};
};


class I_Shape {
public:
	friend ostream &operator<<(ostream &, const I_Shape &obj);
	virtual void print(ostream &os) const = 0;
	virtual ~I_Shape() {};
};


ostream &operator<<(ostream &os, const I_Shape &obj) {
	obj.print(os);
	return os;
}


class Circle : public Shape, public I_Shape {
public:
	virtual void roar() override {
		cout << "Circle" << endl;
	}

	virtual void print(ostream &os) const override {
		os << "This is Circle" << endl;
	}
	
	virtual ~Circle() {};
};


int main() {
	Circle cir = Circle();
    Shape& obj = cir;
	obj.roar();
	
	I_Shape &i = cir;
	cout << i;
	
}

'Computer Science > C++' 카테고리의 다른 글

[C++] Priority Queue with custom data type  (0) 2024.02.22
[C++] lower_bound  (0) 2024.02.06
[C++] Deque<int>  (0) 2024.02.06
[C++] 전문가를 위한 C++ - Chapter 8  (0) 2023.10.07
[C++] find, deque, bfs, structured binding  (0) 2023.09.30