```
class A {
public:
    A(int) {
        cout << "Base class" << endl;
    }
};

class B : virtual public A {
public:
    virtual void do_something() = 0;
};

class C : public B {
public:
    C()
        : A(1) {
        cout << "C class" << endl;
    }

    virtual void do_something() {
    }
};

```

Compiler Error: when object for C is created, compiler is resulting error like 

> 
> error: no matching function for call to ‘A::A()’ 
> 
> 
> 

why compiler expects default constructor of class A?