你能解释一下这个指针的概念吗?

时间:2010-12-19 15:36:31

标签: c++ this this-pointer

我需要理解this指针概念,最好是一个例子。

我是C ++的新手,所以请使用简单的语言,以便我能更好地理解它。

4 个答案:

答案 0 :(得分:6)

this是指向其类实例的指针,可供所有非静态成员函数使用。

如果您声明了一个类,其中包含私有成员foo和方法barfoo可通过bar使用this->foo,但不能通过instance->foo向“局外人”。

答案 1 :(得分:6)

this指针在类中用于引用自身。返回对自身的引用时通常很方便。使用赋值运算符查看原始典型示例:

class Foo{
public:
    double bar;
    Foo& operator=(const Foo& rhs){
        bar = rhs.bar;
        return *this;
    }
};

有时如果事情变得混乱,我们甚至会说

this->bar = rhs.bar;

但在这种情况下通常被视为矫枉过正。

接下来,当我们构造我们的对象时,包含的类需要引用我们的对象来运行:

class Foo{
public:
    Foo(const Bar& aBar) : mBar(aBar){}

    int bounded(){ return mBar.value < 0 ? 0 : mBar.value; }
private:

    const Bar& mBar;
};

class Bar{
public:

      Bar(int val) : mFoo(*this), value(val){}

      int getValue(){ return mFoo.bounded(); }

private:

      int value;
      Foo mFoo;
};

因此this用于将对象传递给包含的对象。否则,没有this如何表示我们在里面的课程?类定义中没有对象的实例。这是一个阶级,而不是一个对象。

答案 2 :(得分:3)

在面向对象编程中,如果在某个对象上调用方法,this指针指向您调用该方法的对象。

例如,如果你有这个类

class X {
public:
  X(int ii) : i(ii) {}
  void f();
private:
  int i;
  void g() {}
};

及其对象x,并在f()上调用x

x.f();

然后在X::f()内,this指向x

void X::f()
{
  this->g();
  std::cout << this->i; // will print the value of x.i
}

由于访问this引用的类成员非常常见,因此您可以省略this->

// the same as above
void X::f()
{
  g();
  std::cout << i;
}

答案 3 :(得分:1)

指针是一种变量类型,它指向内存的另一个位置指针只能保存内存位置的地址 alt text

例如,如果我们说“int指针” - &gt;它保存int变量的内存地址

无效指针 - &gt;可以保存任何类型的非特定数据类型的内存地址。

&安培;给出指向变量(或指向指针的值)