刚看到一段代码,不明白

Kylen 发布于 2012/07/30 20:45
阅读 226
收藏 0
void CRect::SetRect(int l, int t, int r, int b)
{
	::SetRect(this, l, t, r, b);
}

传入this指针式什么意思?

::作用域前面为什么可以为空?

加载中
0
johnzhang68
johnzhang68
::是指SetRect( this , l, t, r, b)是全局函数。this是指由CRect实例化的对象的指针。
johnzhang68
johnzhang68
SetRect( void * , l, t, r, b)就是C语言的API, CRect是C++的类。
Timor君
Timor君
怎么直接赋值?
Kylen
Kylen
有点明白了,但是我还是不知道做的好处是什么,直接赋值不就好了吗?
0
小耶果
小耶果

::表示全局作用域,通常代表没有命名空间的导出函数,一般Windows.h中包含的都是,因为是早期的产物,那时namespace还不是标准.至于为何包装一层,看看MFC的源码,基本上都是这样处理.封装很多时候就为了"隐藏"掉那个handle.至于为何这样,可以参考中间层概念.简单的说:

int _add(int a,int b)
{
    return a+b;
}

int add(int a,int b)
{
    return _add(a,b);
}

乍看似乎是多余,但却充分说明了加层的必要性,也是Windows强健的兼容性的保证.
返回顶部
顶部