#include <iostream>
#include <memory>

class C{
public:
  int x;
};

class A{
public:
  A(std::unique_ptr<C> c) : c(std::move(c)){
    if(c == nullptr){
      c = std::unique_ptr<C>(new C);
      c->x = 1;
    }
  }
  void print(){
    std::cout << c->x << std::endl;
  }
private:
  std::unique_ptr<C> c;
};

class B : public A{
public:
  B(std::unique_ptr<C> c) : A(std::move(c)){
  }
private:
};

int main(int argc, char* argv[]){
  B b(std::move(nullptr));
  b.print();
  return 0;
}