问个基础,c++程序调用过程
有如下调用过程:
m_pSsManager = new CSsManager();
CSsManager()构造函数里调用了InitialThread()函数,该函数定义如下:
void CSsManager::InitialThread()
{
CSendEx* pSendThread = new CSendEx();
pSendThread-> BuildClient();
m_SendList.AddHead(pSendThread);
}
其中的BuildClient函数为:
void CSendEx::BuildClient()
{
CManager::Create();
m_hSend = CreateTcpIF((char*)(LPCSTR)m_szServer, m_nPort, TRUE, 10000);
}
其中类CSendEx是从类CBaseManager派生的,而类CBaseManager又是从CManager派生的,那么上面函数中调用CManager::Create()调用的Create函数是属于类CManager的还是类CSendEx?
其中CManager::Create()函数定义如下:
BOOL CManager::Create(UINT nMaxStoreMsgCount)
{
m_msgQueue.SetMaxStoreMsgCount(nMaxStoreMsgCount);
m_hKillEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
if( !m_hKillEvent )
return FALSE;
unsigned int dwThreadID;
m_hThread = (HANDLE)_beginthreadex(
NULL, 0, ThreadProc, (LPVOID)this, 0, &dwThreadID);
if( !m_hThread ){
CloseHandle(m_hKillEvent);
m_hKillEvent = NULL;
return FALSE;
}
return TRUE;
}
这里面的(HANDLE)_beginthreadex(NULL, 0, ThreadProc, (LPVOID)this, 0, &dwThreadID)开启的线程又是属于哪个对象吗(还是哪个类)?
[解决办法]
(1) 属于类CManager
(2) 从对象设计的逻辑观点来看,你启动的线程属于CManager对象,但是从系统的观点来看,线程本身不属于任何对象,属于操作系统。
[解决办法]
属于类CManager
开启的线程属于CManager对象
[解决办法]
CManager::Create()调用的Create函数是属于类CManager的还是类CSendEx?
CManager::Create()
显式调用 CManager 类的Create成员方法
问个基础,c++程序调用过程解决方法
问个基础,c++程序调用过程有如下调用过程:m_pSsManagernewCSsManager()CSsManager()构造函数里调用了Ini
