对象指针、this指针和智能指针

对象指针

指向的是一个对象,定义形式为: *类名 对象指针名;
那如何通过指针访问对象成员呢? 对象指针名->成员名

例:使用指针来访问Point类的成员
#include
using namespace std;
class Point {
public:
Point(int x = 0, int y = 0) : x(x), y(y) { }
int getX() const { return x; }
int getY() const { return y; }
private:
int x, y;
};
int main() {
Point a(4, 5);
Point *p1 = &a; //定义对象指针(类名 *对象指针名),用a的地址初始化
cout << p1->getX() << endl;//用指针访问对象成员
cout << a.getX() << endl; //还可以用对象名访问对象成员
return 0;
}

this指针

指向当前对象自己,它是隐含于类的每一个非静态成员函数中的。它指出成员函数所操作的对象,即当通过一个对象调用成员函数时,系统先将该对象的地址赋给this指针,然后调用成员函数,成员函数对对象的数据成员进行操作时,就隐含使用了this指针。

例如:Point类的getX函数中的语句:
return x;
相当于:
return this->x;

C++11的智能指针

C++11提供智能指针的数据类型,对垃圾回收技术提供了一些支持,实现一定程度的内存管理。

unique_ptr :不允许多个指针共享资源,可以用标准库中的move函数转移指针
shared_ptr :多个指针共享资源
weak_ptr :可复制shared_ptr,但其构造或者释放对资源不产生影响

猜你喜欢

转载自blog.csdn.net/weixin_42325069/article/details/84065393