任何人都可以请解释一下在地图容器中插入一个新对象的下面使用的方法的区别吗?我已经知道指针和这样的,我真的不深入到虚拟内存中,只有基础知识(地址等)这些有什么区别?
#include "StdAfx.h"
#include <windows.h>
#include <cstdlib>
#include <iostream>
#include <map>
using namespace std;
class CUser
{
public:
CUser() { Init(); };
~CUser() {};
public:
BOOL m_bActive;
BOOL m_bLoggedIn;
SYSTEMTIME m_sysTime;
void Init();
};
void CUser::Init()
{
(*this).m_bActive = FALSE;
m_bLoggedIn = FALSE;
GetSystemTime(&m_sysTime);
}
int main(int argc, char *argv[])
{
map<DWORD, CUser*>mUserMap;
//what is the difference between this
{
CUser pUser;
pUser.m_bActive = FALSE;
pUser.m_bLoggedIn = FALSE;
GetSystemTime(&pUser.m_sysTime);
mUserMap.insert(make_pair(351, &pUser));
}
//and this?
{
CUser *pUser = new CUser;
if(pUser)
{
pUser->m_bActive = TRUE;
pUser->m_bLoggedIn = TRUE;
GetSystemTime(&pUser->m_sysTime);
mUserMap.insert(make_pair(351, pUser));
}
}
/* map<DWORD, CUser*>::iterator it = mUserMap.find(351);
if(it == mUserMap.end())
std::cout << "Not found" << std::endl;
else
{
CUser *pUser = it->second;
if(pUser)
std::cout << pUser->m_sysTime.wHour << std::endl;
} */
return 0;
}
哇,谢谢你!我不知道有这么多人愿意帮忙!我会继续发布我期待成为专家的问题。再次感谢! –