본문 바로가기
C, C++

[c++] 순수 가상 함수

by hong0 2021. 10. 28.
반응형

순수 가상 함수 (pure virtual function)는 아래와 같다.

virtual void parent_test() = 0;

 

순수 가상 함수가 있는 클래스를 추상클래스(abstract class)라고 하며, 이를 상속받는 클래스는 해당 순수 가상 함수를 override 해줘야 한다. 

 

함수 재정의를 하지 않는 경우 (override) 오류로 판단되기 때문에 필수로 해줘야한다.

가상함수의 경우에는 재정의 되지 않아도 오류로 판단하지 않는다.

 

순수 가상 함수로만 이루어진 추상클래스를 인터페이스라고 한다.

 

class parent {
public:
	virtual void parent_test() = 0;
	void print() {
		printf("parent\n");
	}
};

class interface {
public:
	virtual void interface_test1() = 0;
	virtual void interface_test2() = 0;
};


class child1
	: public parent
	, public interface {
public:
	void parent_test() override {
		printf("child1 parent_test\n"); 
	}
	void interface_test1() override {
		printf("child1 interface_test1\n"); 
	}
	void interface_test2() override {
		printf("child1 interface_test2\n"); 
	}
};

class child2
	: public parent
	, public interface {
public:
	void parent_test() override {
		printf("child2 parent_test\n");
	}
	void interface_test1() override {
		printf("child2 interface_test1\n"); 
	}
	void interface_test2() override {
		printf("child2 interface_test2\n"); 
	}
};

 

 

반응형

댓글