C 中的物件指標總結

2022-10-04 04:36:11 字數 2575 閱讀 8593

指向物件的指標

在建立物件的時候,變異系統會給每乙個物件分配一定的儲存空間,以存放其成員。

物件空間的起始位址就是物件的指標。可以定義乙個指標變數,用來存放物件的指標。

乙個簡單的示例1.1:

複製** **如下:

#include

using namespace std;

class student

;student::student(int n,int s)

void student::print()

int main()

指向物件成員的指標

物件有位址,存放物件初始位址的指標變數就是指向物件的指標變數。

物件中的成員也有位址,存放物件成員位址的指標變數就是指向物件成員的指標變數。

1.指向物件資料成員的指標

定義指向物件資料成員的方法和定義指向普通變數的方法相同:

資料型別    *    指標變數名

複製** **如下:

p=&t1.hour;//將物件t1的資料成員hour的位址賦給p,p指向t1.hour

cout<

2.指向物件成員函式的指標

定義指向成員函式的指標和定義指向普通函式的指標的方法是不同的。

定義指向普通函式的指標的方法是這樣的:

資料型別名(* 指標變數名)(引數列表);

如:複製** **如下:

void  (*p)(int n,int m);//p是指向void型函式的指標變數

p=fun;//將fun函式的入口位址賦給指標變數p,p就指向了函式fun

(*p)(a,b);//呼叫fun函式,其中,a,b是實參

而定義乙個指向物件成員函式的指標變數則比較複雜一些。

如果我們直接按照上面的方法定義指標變數,將物件成員函式名賦給指標變數p:

複製** **如下:

void (*p)();        

p=t1.print();

編譯會出現錯誤

成員函式與普通函式的乙個最根本區別:它是類中的乙個成員。

編譯系統要求上面的複製語句中,指標變數的型別必須與賦值號右側函式的型別相匹配,要求在一下3個方面要匹配:

1.函式引數的型別和引數個數

2.函式返回值的型別

3.所屬的類

前兩個是匹配的,而第三點不匹配。

指標變數p與類無關,而print()卻屬於student類。

要定義指向成員函式的指標變數應該採用以下形式:

複製** **如下:

void (student::*p)();//定義p為指向student類中公共成員函式的指標變數

資料型別名(類名::*指標變數名)(參數列列);程式設計客棧

我們知道,所有的student類例項化得到的物件都是公用乙個成員函式的,所以我們沒有必要指定它是指向那個物件的成員函式的指標,我們只需要定義它是指向該類的成員函式就可以了。

使指標變數指向乙個公用成員函式的一般形式為:

複製** **如下:

p=&student::print;

指標變數名=&類名::成員函式名;

在使用時,仍然需要將指標放到具體的物件中使用,(*p)的作用等價於print()

複製** **如下:

stud.(*p);//作用與stud.print()的作用等價

***************==乙個使用物件指標的例子1.2**********=

複製** **如下:

#include

using naakvzplxqqrmespace std;

class student

;student::student(int n,int s)

void student::print()

int main()

this指標

每個物件中的資料成員都分別占用儲存空間,如果對同乙個類定義了n個物件,則有n組同樣大小的空間一存放n個物件中的資料成員。

單數不同的物件都呼叫同一段函式**段。

那麼,當不同物件的成員函式引用資料成員時,怎麼能保證引用的是所制定的物件的資料成員呢?

實際上,在每乙個成員函式中,都包含乙個特殊的指標,這個指標的名字是固定的,稱為this指標。

它是指向本類物件的指標,它的值是當前被呼叫的成員函式所在的物件的起始位址。

例如:print()函式中

複製** **如下:

cout<

實際上是

複製** **如下:

cout

this指標式隱式使用的,它是作為引數被傳遞給成員函式。

在程式中的函式:

複製** **如下:

void student::print()

c++編譯系統會自動處理成:

複製** **如下:

void student::print(student *this)

即在成員函式的形參表列中增加乙個this指標。在呼叫成員函式stud.print()時,實際上是用以下方式呼叫的:

複製** **如下:

stud.print(&stud);

本文標題: c++中的物件指標總結

本文位址: /ruanjian/c/100486.html

C 中的函式指標和函式物件總結

原文 篇 一 函式指標 函式指標 是指向函式的指標變數,在c編譯時,每乙個函式都有乙個入口位址,那麼這個指向這個函式的函式指標便指向這個位址。函式指標的用途是很大的,主要有兩個作用 用作呼叫函式和做函式的引數。函式指標的宣告方法 資料型別標誌符 指標變數名 形參列表 一般函式的宣告為 int fun...

C 中的函式指標和函式物件總結

篇 一 函式指標 函式指標 是指向函式的指標變數,在c編譯時,每乙個函式都有乙個入口位址,那麼這個指向這個函式的函式指標便指向這個位址。函式指標的用途是很大的,主要有兩個作用 用作呼叫函式和做函式的引數。函式指標的宣告方法 資料型別標誌符 指標變數名 形參列表 一般函式的宣告為 int func i...

C 中的函式指標和函式物件總結

第一篇 函式指標 函式指標,表示的是乙個指標,它指向的是乙個函式,它含義是指指向函式的指標變數,在c編譯時,每乙個函式都有乙個入口位址,那麼這個指向這個函式的函式指標便指向這個位址。函式指標的用途是很大的,主要有兩個作用 1 用作呼叫函式 2 做函式的引數。函式指標的宣告方法 資料型別標誌符 指標變...