-
對象指針
鎖定
指向類的成員的指針。在C++中,可以説明指向類的數據成員和成員函數的指針。
- 中文名
- 對象指針
- 語 種
- C++
- 定 義
- 指向類的成員的指針
- 格 式
- 類型説明符,類名,指針名
- 對 象
- 對象名和對象成員運算符
- 類 型
- 對象指針
對象指針定義
對象指針:指向類的成員的指針。在C++中,可以説明指向類的數據成員和成員函數的指針。
對象指針格式
指向數據成員的指針格式如下:
<類型説明符><類名>::*<指針名>
指向成員函數的指針格式如下:
<類型説明符>(<類名>::*<指針名>)(<參數表>)
例如,設有如下一個類A:
class A
{
public:
int fun (int b) { return a*c+b; }
A(int i) { a=i; }
int c;
private:
int a;
};
定義一個指向類A的數據成員c的指針pc,其格式如下:
int A:: *pc = &A::c;
再定義一個指向類A的成員函數fun的指針pfun,其格式如下:
int (A:: *pfun)(int) = &A::fun;
由於類不是運行時存在的對象。因此,在使用這類指針時,需要首先指定A類的一個對象,然後,通過對象來引用指針所指向的成員。例如,給pc指針所指向的數據成員c賦值8,可以表示如下:
A a;
a.*pc = 8;
其中,運算符.*是用來對指向類成員的指針來操作該類的對象的。
如果使用指向對象的指針來對指向類成員的指針進行操作時,使用運算符->*。例如:
A *p = &a; //a是類A的一個對象,p是指向對象a的指針。
p ->* pc = 8;
讓我們再看看指向一般函數的指針的定義格式:
<類型説明符>*<指向函數指針名>(<參數表>)
關於給指向函數的指針賦值的格式如下:
<指向函數的指針名>=<函數名>
關於在程序中,使用指向函數的指針調用函數的格式如下:
(*<指向函數的指針名>)(<實參表>)
對象指針相關應用
下面給出一個使用指向類成員指針的例子:
#include <iostream.h>
class A
{
public:
A(int i) { a=i; }
int fun(int b) { return a*c+b; }
int c;
private:
int a;
};
void main()
{
A x(8); //定義類A的一個對象x
int A::*pc; //定義一個指向類數據成員的指針pc
pc=&A::c; //給指針pc賦值
x.*pc=3; //用指針方式給類成員c賦值為3
int (A::*pfun)(int); //定義一個指向類成員函數的指針pfun
pfun=&A::fun; //給指針pfun賦值
A *p=&x; //定義一個對象指針p,並賦初值為x
cout<<(p->*pfun)(5)<<endl; //用對象指針調用指向類成員函數指針pfun指向的函數
}
- 詞條統計
-
- 瀏覽次數:次
- 編輯次數:12次歷史版本
- 最近更新: yz柠栀