4 c++ inheritance constructor class using-declaration
当我using这样使用时,为什么构造函数是公开继承的?
class Base {
int x;
public:
Base(int x);
};
class Derived : public Base {
using Base::Base;
};
Run Code Online (Sandbox Code Playgroud)
我现在可以这样做:
Derived d (2);
Run Code Online (Sandbox Code Playgroud)
我认为using声明可以看到它们所在的位置。在这里,它应该是私有的。
来自C++ 编程语言:
通过 using 声明带入派生类作用域的名称的访问权限由 using 声明的位置决定;
根据 C++17 标准(10.3.3 using 声明)
19 由using 声明创建的同义词具有成员声明的通常可访问性。命名构造函数的using 声明符不会创建同义词;相反,如果附加构造函数在用于构造相应基类的对象时可访问,则它们是可访问的,并且using 声明的可访问性将被忽略。
| 归档时间: |
|
| 查看次数: |
487 次 |
| 最近记录: |