我需要理解this
指针概念,最好是一个例子。
我是C ++的新手,所以请使用简单的语言,以便我能更好地理解它。
答案 0 :(得分:6)
this
是指向其类实例的指针,可供所有非静态成员函数使用。
如果您声明了一个类,其中包含私有成员foo
和方法bar
,foo
可通过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)
指针是一种变量类型,它指向内存的另一个位置。 指针只能保存内存位置的地址
例如,如果我们说“int指针” - &gt;它保存int变量的内存地址
无效指针 - &gt;可以保存任何类型的非特定数据类型的内存地址。
&安培;给出指向变量(或指向指针的值)