![]() |
#2
pangding2010-08-07 23:00
|

//对象指针相关概念
/*对象指针:在建立对象时,编译系统会为每一个对象分配一定的存储空间,以存放其成员。对象空间的起始地址就是对象的指针。
可以定义一个指针变量,用来存放对象的指针。定义指向类对象的指针变量的一般形式为:类名 * 对象指针名;
对象成员指针:对象有地址,存放对象初始地址的指针变量就是指向对象的指针变量。对象中的成员也有地址,存放对象成员地址的
指针变量就是指向对象成员的指针变量。
指向对象数据成员的指针:定义指向对象数据成员的指针变量的一般形式为:数据类型名 * 指针变量名;
指向对象成员函数的指针:定义指向公用成员函数的指针变量的一般形式为:数据类型名 (类名:: * 指针变量名)(参数表列);
使指针变量指向一个公用成员函数的一般形式为:指针变量名 = & 类名::成员函数名;
*/
//有关对象指针的使用方法
#include <iostream>
using namespace std;
class Time //定义类 Time
{
public:
Time(int,int,int); //声明构造函数
int hour;
int minute;
int sec;
void get_time( ); //声明公有成员函数
};
Time::Time( int h, int m, int s) //类外定义构造函数
{
hour = h;
minute = m;
sec =s;
}
void Time::get_time( ) //定义公有成员函数
{ cout << hour << ":" << minute << ":" << sec << endl;}
int main( )
{
Time t1( 10,13,56); //定义 Time 类对象 t1
int * p1 = &t1.hour; //定义指向对象数据成员的指针变量,并使其指向 t1.hour
cout << * p1 << endl; //输出 p1 所指的数据成员 t1.hour
t1.get_time( ); //调用对象 t1 的成员函数 get_time
Time * p2 = &t1; //定义指向 Time 类对象的指针变量 p2,并使其指向对象 t1
p2->get_time ( ); //调用 p2 所指向对象(即 t1)的 get_time 函数
void( Time::* p3)( ); //定义指向 Time 类公用成员函数的指针变量 p3
p3 = &Time::get_time; //使 p3 指向 Time 类公用成员函数 get_time
( t1.* p3)( ); //调用对象 t1 中 p3 所指的成员函数(即 t1.get_time( ))
system("pause");
return 0;
}
/*对象指针:在建立对象时,编译系统会为每一个对象分配一定的存储空间,以存放其成员。对象空间的起始地址就是对象的指针。
可以定义一个指针变量,用来存放对象的指针。定义指向类对象的指针变量的一般形式为:类名 * 对象指针名;
对象成员指针:对象有地址,存放对象初始地址的指针变量就是指向对象的指针变量。对象中的成员也有地址,存放对象成员地址的
指针变量就是指向对象成员的指针变量。
指向对象数据成员的指针:定义指向对象数据成员的指针变量的一般形式为:数据类型名 * 指针变量名;
指向对象成员函数的指针:定义指向公用成员函数的指针变量的一般形式为:数据类型名 (类名:: * 指针变量名)(参数表列);
使指针变量指向一个公用成员函数的一般形式为:指针变量名 = & 类名::成员函数名;
*/
//有关对象指针的使用方法
#include <iostream>
using namespace std;
class Time //定义类 Time
{
public:
Time(int,int,int); //声明构造函数
int hour;
int minute;
int sec;
void get_time( ); //声明公有成员函数
};
Time::Time( int h, int m, int s) //类外定义构造函数
{
hour = h;
minute = m;
sec =s;
}
void Time::get_time( ) //定义公有成员函数
{ cout << hour << ":" << minute << ":" << sec << endl;}
int main( )
{
Time t1( 10,13,56); //定义 Time 类对象 t1
int * p1 = &t1.hour; //定义指向对象数据成员的指针变量,并使其指向 t1.hour
cout << * p1 << endl; //输出 p1 所指的数据成员 t1.hour
t1.get_time( ); //调用对象 t1 的成员函数 get_time
Time * p2 = &t1; //定义指向 Time 类对象的指针变量 p2,并使其指向对象 t1
p2->get_time ( ); //调用 p2 所指向对象(即 t1)的 get_time 函数
void( Time::* p3)( ); //定义指向 Time 类公用成员函数的指针变量 p3
p3 = &Time::get_time; //使 p3 指向 Time 类公用成员函数 get_time
( t1.* p3)( ); //调用对象 t1 中 p3 所指的成员函数(即 t1.get_time( ))
system("pause");
return 0;
}