對象指針

指向類的成員的指針。在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指向的函式
}
以上程式定義了好幾個指針,雖然它們都是指針,但是所指向的對象是不同的。p是指向類的對象;pc是指向類的數據成員;pfun是指向類的成員函式。因此它們的值也是不相同的。

相關詞條

熱門詞條

聯絡我們