我想问问:在VC里用一个类创建一个对象指针,和一个对象变量有什么区别?比如:
CListCtrl * plc = (CListCtrl*)GetDlgItem(IDC_LIST1);
CListCtrl m_lc;
这样两句话在使用的时候有什么区别?请详细介绍一下?
还有一个问题,在一个类里,这个类的实现文件里,有很多成员函数,如何共享一个变量,可以在一个类里共同访问。

解决方案 »

  1.   

    还有一个问题,在一个类里,这个类的实现文件里,有很多成员函数,如何共享一个变量,可以在一个类里共同访问。
    ============>
    定义成类成员变量就可以在类的成员函数之间共享CListCtrl * plc = (CListCtrl*)GetDlgItem(IDC_LIST1);
    CListCtrl m_lc;
    ================>
    第一句是对话框上确实存在的控件,第二句不包含任何实际的对象,只是一个空类.
    指针和变量的最大区别应该是虚函数的概念了,要实现动态就必须用指针
      

  2.   

    (1)当然了,类中自己的东西自己当然可以访问,自己都不能访问还留给谁访问?(2)有的函数(就像上面的GetDlgItem())返回的就是指针,这时你就定义指针来接收。相反如果返回的不是指针,就没必要定义指针然后再用"&"取址。不过MFC中的GetXXX()之类的函数大部分返回指针。另:两者的用法差不多,只不过很多时候指针要你自己释放(上面的plc指向已存在的控件,所以不用程序员释放),有ReleaseXXX(),delete等等
      

  3.   

    CListCtrl * plc = (CListCtrl*)GetDlgItem(IDC_LIST1);这样的不是“创建一个对象指针”,而是获得存在的对象的指针,和新建一个对象完全不同。
      

  4.   

    1 CListCtrl * plc = (CListCtrl*)GetDlgItem(IDC_LIST1)
      是让plc指向勾件指针IDC_LIST1,不需要分配内存
    2 CListCtrl m_lc
      是重新声明一个CListCtrl对象,需要分配一块内存