c++ - 为什么编译器不在 Derived 类构造函数的定义中提示?

标签 c++ visual-studio-2008

请注意 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/

相关文章:

database - 保持多个环境中的开发数据库同步

visual-studio-2008 - 如何在 Visual Studio 2008 中显示剪贴板环?

c++ - 嵌套 if else 语句 C++

c++ - 使用 struct 和 map 创建 priority_queue

c++ - 为什么 C++ 标准不弃用递增/递减运算符?

c++ - 如何在共享内存中存储字符串数据类型?

c++ - 推断可变参数模板的参数类型?

c# - 如何从 SVN 存储库获取分支的最高修订号?

c++ - Visual C++ 窗体、简单消息框和将文本从文本字段分配给字符串时出错

visual-studio-2008 - 禁用 VS 2008 宏