为了封装性,方便类的维护,但在有些时候某些变量如果不提供Get或Set成员函数,而
我们又想直接通过变量名(这是前提)来访问变量,而不需要通知接口维护者来更改接口.
这时,VC的内联汇编就可以帮我们了.
假设有类定义如下:
class CTestStack
{
public:
CTestStack();
virtual ~CTestStack();
void MemberUsed();
private:
int m_nCount;
}
实现代码如下:
CTestStack pS;
pS.MemberUsed();
int nNowCnt = -1;
__asm
{
mov ebx, [pS].m_nCount
mov nNowCnt, ebx
mov [pS].m_nCount, 300
}
printf("%d/n", nNowCnt);
__asm
{
mov ebx, [pS].m_nCount
mov nNowCnt, ebx
}
printf("%d/n", nNowCnt);
如此就可以轻松绕开私有或保护属性的限制.