乍一看,
using
导入特定函数(例如using std::cout
到作用域)。但这using
将所有基类构造函数导入到派生类中。
template< typename T >
class Vec : public std::vector< T >
{
public:
using std::vector<T>::vector; // ???
//...
};
What's actually behind the scenes of this `using` declaration?
因为它是
继承的,所以应该是所有基类构造函数 应该已经可用(即为什么需要public
)?using
否,默认情况下不继承基类的构造函数。详细的解释可以在下面的讨论中找到:
这个
声明的背后到底是什么?using
来自 cppreference.com,
using
确实
- Using-声明可用于将命名空间成员引入 其他命名空间和块作用域,或者 引入基类 派生类定义中的成员。
- [...](c++20 具体...)
同时继承:
如果 using 声明引用直接基类的构造函数 正在定义的类(例如
),所有构造函数 该基地(忽略成员访问)对过载可见 初始化派生类时的解析.using Base::Base;