物件指標、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,但其構造或者釋放對資源不產生影響