ADO编程中:
_ConnectionPtr m_ConnectionPtr;
m_Connection.CreateInstance("ADODB.Connection");
m_Connection->Open((_bstr_t)ConStr,"","",adModeUnknown);
m_Connection->Close();又是.运算符,又是->,到底这个_ConnectionPtr是什么?
_ConnectionPtr m_ConnectionPtr;
m_Connection.CreateInstance("ADODB.Connection");
m_Connection->Open((_bstr_t)ConStr,"","",adModeUnknown);
m_Connection->Close();又是.运算符,又是->,到底这个_ConnectionPtr是什么?
解决方案 »
- 开机自动启用后,弹出了界面,几秒过后,自动关闭了?
- MessageBox如何弹出带“!”图标的对话框?
- [心得]关于如何向MFC对话框添加菜单
- 如何来判断自己写到硬盘上的文件有没有被用户修改过?听说可以用校验码?但是不太清楚怎么做,高手指教。
- 理解MFC是看《VC技术内幕》好还是看《深入浅出MFC》好?
- 请教一个很简单的问题!谢谢!
- bcg控件使用问题系列之五————关闭CFORMVIEW类的窗口时,报这样的错!
- 受朋友所托。500分求助一画图小程序!!!(
- 有谁能畅谈一下C++中关于rtti(运行时类型识别)的用处?
- pdh获取windows下的磁盘读写速率?
- 闲着无聊,写了个截图软件离线版,请指教哈~
- dll注入远程线程后设置热键失败 怎么解决呢?
既然是指针,应该是调用Connection对象的CreateInstance方法,为什么不用"->",而要用"."?
->是重载符,为了_ConnectionPtr使用起来像指针
重载->,恰好符合其名字的意义 - 智能“指针”_ConnectionPtr声明
_COM_SMARTPTR_TYPEDEF(_Connection, __uuidof(_Connection));_COM_SMARTPTR_TYPEDEF宏
#define _COM_SMARTPTR_TYPEDEF(Interface, IID) typedef _com_ptr_t<Interface> Interface ## Ptr;类_com_ptr_t的运算符->重载
Interface* operator->() const
{
if (m_pInterface == NULL) {
_com_issue_error(E_POINTER);
} return m_pInterface;
}
如
m_Connection->Open((_bstr_t)ConStr,"","",adModeUnknown);相当于
m_Connection.m_pInterface->Open((_bstr_t)ConStr,"","",adModeUnknown);
m_pInterface是private的
m_Connection.m_pInterface->Open只是说明一下
模板类指针才对,纠正一下_com_ptr
一般这种点操作是智能指针的功能,如内存管理之类的
是->操作就是封装的指针的功能了,这里就是是数据库具体的方法