【发布时间】:2019-04-30 19:42:51
【问题描述】:
class A {
protected:
A(int) {}
};
struct B : public A {
public:
using A::A;
};
void print(B b) {}
int main(int argc, char** argv) {
print(1);
return 0;
}
此代码无法编译...即使在 struct B 公共部分中使用“使用 A::A”,B 仍然没有接受 int 的公共构造函数(但它有一个受保护的构造函数)。
看来:
我可以用'using'继承公共构造函数
我可以在派生类中将基类中定义的任何方法(私有或受保护或其他)重新声明为公共
但是我不能对构造函数做同样的事情:没有办法用“使用”来改变它的可见性
为什么?
【问题讨论】:
-
因为这是指定语言的方式。
标签: c++