标题只是我对以下示例感到困惑的几件事之一:
struct A {
A() {
std::cout << "Default constructor of A" << std::endl;
}
A(const A &) {
std::cout << "Copy constructor of A" << std::endl;
}
};
struct B : private A {
// using A::A; // does not help for question 2.
};
int main() {
A a;
B b;
B c(b); // Does not work with `a` as an argument
return 0;
}
此示例输出:
Default constructor of A
Default constructor of A
Copy constructor of A
问题:
- 的私有继承构造函数如何在
B
中可用main
?这个问题与本文中的问题类似,但问题是关于从内部使用该构造函数B
,这是不同的。 - 被调用的复制构造函数接受一个
const A &
参数。但是,如果我写B c(a)
而不是B c(b)
,则代码不会编译。怎么来的?(请注意,取消注释using
指令B
没有帮助)。 - 这是次要的,但仍然如此。为什么编译器没有警告我未使用的变量
a
和c
?
问题 2 已转到另一个职位。