VS2013似乎不支持C ++ 11的构造函数继承,如下所述: http://msdn.microsoft.com/en-us/library/hh567368.aspx
所以以下内容对我来说是不可能的:
class Animal {
public:
int age;
explicit Animal(int _age) {
this->age = _age;
}
};
class Dog : public Animal {
public:
using Animal::Animal;
};
int main() {
Dog d = Dog(5);
}
VS2013中没有硬编码Dog的构造函数与Animal相同吗?
答案 0 :(得分:3)
你能做的最近的就是完美地转发构造函数;
template <typename... Args>
Dog(Args&&... args)
: Animal(std::forward<Args>(args)...)
{ }
在某些情况下,它仍然与using Animal::Animal
不完全相同,但它至少可以让你获得所有Animal
构造函数,并保护你免受更改,迫使你每次重写Dog
的构造函数。