C++ 계통 상속간의 인터 페이스

ikpil의 이미지

상속할때 private 로 상속하면, 파생 클래스에선 .. 다 접근 못한다고 배웠는데..
... public 이나 private나 차이가 없습니다. 아래 코드 포함합니다.

혹시 VC 2005에선, ... 개념이 날라갔나요;;?

using namespace std;
class CTest
{
public:
	int public_c;
protected:
	int protected_b;
private:
	int private_a;
};
 
class Devied : private CTest
{
public:
	void public_fun(void)
	{
		cout << public_c << endl;
	}
	void protected_fun(void)
	{
		cout << protected_b<<  endl;
	}
	void private_fun(void)
	{
		cout << private_a <<  endl;
	}
};
klara의 이미지

댓글이 두개 달렸네요-_-; 이쪽은 무시해주세요. 죄송합니다.

klara의 이미지

이게 컴파일 된다면 정말로 VC++이 맛이간 것입니다.
참고로 말씀하시는 걸로 봐선 뭔가 오해하고 계신듯합니다.
private 상속하면 부모클래스의 것들을 private멤버로 받는 것입니다.
즉 부모클래스에서 public이나 protected로 지정된 멤버함수나 변수들은 그대로 쓸수 있습니다.
여기서 컴파일이 안되야 하는 이유는 private_fun 함수가 부모클래스의 '원래부터' private인 멤버를 쓸려고 하기 때문입니다.

즉 상속된 것들까지 포함하여 Devied를 적어본다면

class Devied : private CTest
{
public:
...
private:
	int public_c;
	int protected_b;
};

이렇게 되어있는 셈입니다.
ikpil의 이미지

잘못 이해하고 있었습니다
감사합니다 재미있네요.