_ConnectionPtr pConnectDB;pConnectDB->Close();
pConnectDB.Release();pConnectDB.Close()和pConnectDB->Close()两种情况都存在,那么到底有什么区别?很多成员用'.'和'->'都会出来,不明白区别,请大侠给解惑!

解决方案 »

  1.   

    ADO的是Smart Pointer(智能指针)因为COM要用AddRef(),Release()的,好繁啊所以用智能指针来封装它们的,智能指针重载了 ->  运算符,
    其实它是类,所以可以用.来调用它的成员函数,又因为重载了 ->  ,
    所以可以用->来调用它的封装的COM的东西哦!(不是成员函数)
      

  2.   

    _ConnectionPtr等是智能指针,是一个经过封装了的指针,它本身是一个C++对象,有自己的成员函数
    这些成员函数用.访问
    同时,它又管理了一个指针,重载了"->"运算符号.
    使用"->"访问其管理的那个指针所指向对象的成员函数。
      

  3.   

    但是在实际程序种pConnectDB->Close()或者pCommandDB->Close()会出错,但改为pCommandDB.Close()则正确,为什么?
      

  4.   

    它是指针和对象的结合
    pConnectDB的Close要看你如何申明
      

  5.   

    主要是记录集和command的close的用法,'->'会出错的!
      

  6.   

    对,要看你如何申明的!
    _ConnectionPtr m_pcnn;
    m_pcnn->Close();//我这么用没有问题