请注意 Derived
类构造函数有 ii
作为它的第一个参数,但参数传递给了Base
等于i
故意。
class Base
{
protected:
int i;
public:
Base(int i) : i(i) {}
};
class Derived : public Base
{
private:
int k;
public:
Derived(int ii, int k) : Base(i), k(k) {} // Why not C2065: 'i' undeclared identifier
};
int main()
{
}
最佳答案
因为i
是继承自Base
的成员变量,所以是定义的。您可以自由访问初始化列表中的成员变量,但您正在做的是在初始化之前访问变量,我认为这是未定义的行为。
关于c++ - 为什么编译器不在 Derived 类构造函数的定义中提示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8113697/