Vin*_*rta 0 c++ polymorphism pointers
我正在学习C++,这次我搞乱了指针,研究了this指针和多态.我的问题是,转换是否安全,我知道基本上我可以m_uConnectedUsers直接从CUser课堂上访问因为'公共',但我可能会找到一个需要它的机会,我想知道你的专业人士的意见它.
#include <windows.h>
#include <iostream>
using namespace std;
class CUserCounter
{
public:
CUserCounter();
virtual ~CUserCounter(){};
BOOL m_bEmpty;
u_long m_uConnectedUsers;
};
CUserCounter::CUserCounter()
{
m_bEmpty = TRUE;
m_uConnectedUsers = 0;
}
class CUser : public CUserCounter
{
public:
CUser(LPCTSTR szName, BOOL bConnected, BOOL bChatting = FALSE );
virtual ~CUser(){};
BOOL m_bConnected;
BOOL m_bIsChatting;
TCHAR szCharName[32];
bool IncreaseMoverMeter( unsigned uMeters );
};
CUser::CUser( LPCTSTR szName, BOOL bConnected, BOOL bChatting )
{
if( szName )
{
if( strlen( szName ) > 30 )
strcpy( szCharName, "Invalid" );
else
strcpy( szCharName, szName );
}
m_bConnected = bConnected;
m_bIsChatting = bChatting;
}
bool CUser::IncreaseMoverMeter( unsigned uMeters )
{
//is it safe? how does it works
CUserCounter* pUserCounter = (CUserCounter*)this;
if( pUserCounter )
{
pUserCounter->m_uConnectedUsers++;
return true;
}
return false;
}
int main( int argc, char *argv[] )
{
CUser *pUser = new CUser( "Jonh", FALSE );
std::cout << pUser->IncreaseMoverMeter( 4 );
system("pause>nul");
return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
是的,这是安全的,但也没有必要.:)
转换是隐式的,因此无需强制转换.
CUser 是 CUserCounter(至少在你的设计中),所以指向CUsera的指针也是指向a的指针CUserCounter.
| 归档时间: |
|
| 查看次数: |
533 次 |
| 最近记录: |