c++对象指针-01(转载)

1.指向对像的指针
在建立对像时,编译系统会为每一个对像分配一定的存储空间,以存放其成员,对像空间的起始地址就是
对像的指针。可以定义一个指针变量,用来存和对像的指针。如果有一个类:
class Time
{
   public:
 int hour;
        int minute;
        int sec;
        void get_time();
};
void Time::get_time()
{
   cout << hour << ":" << minute << ":" << sec << endl;
}

在此有以下语句:
Time *pt;//定义pt 为指向Time类对像的指针变量
Time t1;//定义t1为Time类对像
pt=&t1;//将t1的起始地址赋给pt

这样,pt 就是指向Time类对象的指针变量,它指向对象t1。
定义指向类对象的指针变量的一般形式为:

类名 *对象指针名;

可以通过对象指针访问对象和对象的成员。如:
*pt       pt所指向的对像,即t1
(*pt).hour      pt所指向的对象中的hour成员,即t1.hour
pt->get_time()  pt把指向的对象中的get_time函数,即t1.get_time()
(*pt).get_time()

2.指向对象成员的指针

a.指向对象数据成员的指针
定义指向对象数据成员的指针的方法与定主指向变通的指针变量的方法相同。如:
int *p;

定义指向对象数据成员的指针变量的一般形式为:

数据类型名 *指针变量名;

b.指向对象成员函数的指针

定义指向对象成员函数的指针变量的方法和定义指向变通函数的指针变量方法有所不同。
定义指向变通函数的指针变量的方法:

数据类型名  (*指针变量名)();如:
void (*p)();//p是指向void型函的指针变量

定义指向成员函的指针:

数据类型名 (类名::*指针变量名)();
使指针变量指向一个公用成员函数的一般形式为
指针变量名=&类名::成员函数名;

示例:

#include <iostream>
using namespace std;
class 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;//定义指向整型数据的指针变量p1,并使p1指向t1.hour
 cout << *p1 << endl;
 t1.get_time();//调用对象t1的成员函数get_time()

Time *p2=&t1;//定义指向Time类对象的指针变量p2,并使p2指向t1
 p2->get_time();//调用p2所指向对象的get_time()函数
 void (Time::*p3)();//定义指向Time类公用成员函数get_time
 p3 = &Time::get_time;//使p3指向Time类公用成员函数get_time
 (t1.*p3)();//调用对象t1中p3所指的成员函数

return 0;
}

时间: 2024-10-13 17:09:50

c++对象指针-01(转载)的相关文章

sdut 面向对象程序设计上机练习九(对象指针)

面向对象程序设计上机练习九(对象指针) Time Limit: 1000MS Memory limit: 65536K 题目描述 建立对象数组,内放5个学生数据(学号是字符串类型.成绩是整型),设立max函数,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号和成绩. 输入 输入5个学生数据. 输出 输出5个学生中成绩最高者的学号和成绩. 示例输入 01 89 02 78 03 56 04 92 05 76 示例输出 04 92 来源 #include <iostr

类和对象的使用之对象指针

1.对象指针的一般概念 对象指针:指向类的成员的指针.在C++中,可以说明指向类的数据成员和成员函数的指针. 对象指针遵循一般变量指针的各种规则:类名 *对象指针名: 对象指针名à成员名: 对象指针在使用之前,也一定要先进行初始化,让它指向一个已经声明过的对象,然后再使用.通过对象指针,可以访问到所指向对象的公有成员. 2.指向对像的指针在建立对像时,编译系统会为每一个对像分配一定的存储空间,以存放其成员,对像空间的起始地址就是对像的指针.可以定义一个指针变量,用来存和对像的指针.如果有一个类:

类对象指针

类对象指针定义 Tdate d1; Tdate *p1=&d1; Tdate *p2=(Tdate *)malloc(sizeof(Tdate));

C# CLR via 对象内存中堆的存储【类型对象指针、同步块索引】

最近在看书,看到了对象在内存中的存储方式. 讲到了对象存储在内存堆中,分配的空间除了类型对象的成员所需的内存量,还有额外的成员(类型对象指针. 同步块索引 ),看到这个我就有点不懂了,不知道类型对象指针是什么,指向的什么? 从网上找也没有找到,最后往下看,书中有些描述.说下我的理解: 类型对象指针:指向类型对象存储的地址,假如有一个类型Person,它在堆中有一块区域存储它内部的字段和成员以及两个额外成员(类型对象指针. 同步块索引 ),类型对象的类型对象指针指向的是System.Type的地址

关于构造函数对象指针等问题

/*关于构造函数对象指针及是否调用构造函数的问题*/ #include<iostream>using namespace std;class Date {  public:   Date(){ ye=1; me=2; de=3;}   Date(int y,int m,int d);   void print();   private:    int ye;    int me;    int de;};void Date::print(){  cout<<ye;} /*Date:

MFC通过对话框窗口句柄获得对话框对象指针

C***Dialog* pWnd= (C***Dialog*)FromHandle(hWnd); //由句柄得到对话框的对象指针    pWnd->xxx( );                                             //调用C***Dialog中的函数xxx(); 通过窗口类函数:CWnd *GetWindow获得窗口指针,pWnd->m_hWnd(The handle of the Windows window attached to this CWnd)

对象指针

///对象指针 #include <iostream> using namespace std; class Time { public: Time(int h=10,int m=10,int s=10):hour(h),minute(m),sec(s) {} int hour; int minute; int sec; void get_time(); }; void Time::get_time() { cout<<hour<<" "<&l

delete 类对象指针的注意事项]

http://blog.csdn.net/infoworld/article/details/45560219 场景:1. C++类有构造和析构函数,析构函数是在类对象被delete时(或局部变量自动销毁时)调用来释放资源. 2. C++类对象指针很多情况下需要赋值给void*通用指针来达到传输对象的目的,但是往往这种void*指针就是造成内存泄漏或程序错误的根源, 这就是为什么C++存在泛型的目的,它也是为了在编译时刻消除这种对象不确定性,避免delete或使用时的错误. 3. delete

LoadRunner测试结果分析01 转载至zhangzhe的新浪博客

LoadRunner测试结果分析之我见 LoadRunner生成测试结果并不代表着这次测试结果的结束,相反,这次测试结果的重头戏才刚刚开始.如何对测试结果进行分析,关系着这次测试的成功与否.网上关于LoadRunner测试结果如何分析的介绍相当匮乏,在总结他人的观点和自己的实验体会基础上来介绍如何进行LoadRunner测试结果分析. 1. LoadRunner测试结果分析的第一步应该是查看分析综述(Analysis Summary),其包括统计综述(Statistics Summary).事务