基本构造函数的using
声明是私有的,但仍然可以构造该类。为什么?
对于必须公开的operator[]
'声明,可访问性的工作方式不同。using
#include <vector>
template<typename T>
class Vec : std::vector<T>
{
private:
using std::vector<T>::vector; // Works, even if private. Why?
public:
using std::vector<T>::operator[]; // must be public
};
int main(){
Vec<int> vec = {2, 2};
auto test = vec[1];
}
如果我希望构造函数是私有的怎么办?可以通过using
声明来完成吗?