class Base {
public:
Base(int a) : data_(a) {}
Base(double b) : data_(static_cast<int>(b)) {}
Base(string c) : data_(static_cast<int>(c.size())) {}
virtual ~Base() = default;
protected:
int data_ = 0;
};
class Derived : public Base {
public:
using Base::Base;
Derived(vector<int> v) : Base(static_cast<int>(v.size())) {}
virtual ~Derived() = default;
int data() const { return data_; }
private:
};
int main(int argc, char** argv) {
{
Derived derived(6);
cout << derived.data() << endl;
}
{
Derived derived(1.2);
cout << derived.data() << endl;
}
{
Derived derived("Hello");
cout << derived.data() << endl;
}
{
Derived derived(vector<int>({1, 2, 3}));
cout << derived.data() << endl;
}
return 0;
}