#include <iostream>
using namespace std;

class Base
{
protected:
	int m_i;

public:
	Base(int value)
		: m_i(value)
	{}
  
  void print()
  {
    cout << "I'm base" << "\n";
  }
  
  
};

class Derived : public Base
{
private:
  double m_d;
  
public:
  Derived(int value)
    : Base(value)
  {}
  
  using Base::m_i; // m_i가 Derived 안에서는 public이 된다.
  
private:
  using Base::print; // do not add () // 함수 이름만 있으면 된다.
  void print() = delete; // 아예 delete를 해버리면 자식에서는 print를 접근 불가능하다.
};

int main()
{
  Derived derived(7);
  // derived.print(); private이기 때문에 접근 불가능.
 
  return 0;
}