代码之家  ›  专栏  ›  技术社区  ›  Kevin Meredith

C++可变范围

  •  1
  • Kevin Meredith  · 技术社区  · 14 年前
    // declare a class with private variable “int * _a”
    
    // declare a function of this class,  foo()
    
    Void foo() {
    
    int * _a; // 1. Does this re-declaration then make _a equal to an unknown value?
              // 2. Does a go out of scope after foo() returns?
    
    }
    
    2 回复  |  直到 8 年前
        1
  •  7
  •   James McNellis    14 年前
    1. 那么这个重新声明 _a 等于未知值?

    不。这不是“重新声明”。这是一个名为 _一个

    它与类成员变量没有任何关系 _一个 _一个 ,无法访问成员变量 _一个 _一个 _一个 this->_a .

    1. 之后是否超出范围 foo() 返回?

        2
  •  1
  •   wilhelmtell    14 年前

    这就是所谓的 阴影 . foo() 的本地指针 _a 福() 是该类的成员,任何对 将解析为本地指针。此外,作为任何作用域变量,当指针超出作用域时,它将自动销毁自身。成员指针,不用说,只要其拥有的实例是活动的,它就将保持活动状态。

    要访问成员数据,您必须说 this->_a