VC中this的用法

来源:百度知道 编辑:UC知道 时间:2024/06/21 21:11:33
void CDDBTestView::OnDraw(CDC* pDC)
{
CDDBTestDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);
CRect rc;
GetWindowRect(&rc);
CClientDC dc(this);
CDC MemDC;
MemDC.CreateCompatibleDC(&dc);
CBitmap *pOldBitmap=MemDC.SelectObject(&bitmap);
BITMAP bm;
bitmap.GetBitmap(&bm);
dc.SetStretchBltMode(COLORONCOLOR);
dc.StretchBlt(5,5,rc.right-rc.left-10,rc.bottom-rc.top-80,&MemDC,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
MemDC.SelectObject(pOldBitmap);
}

这段程序里的this 是什么作用?我是初学者,知道this是一个很灵活的用法,但是具体的用法理解的很不清晰,希望有人可以帮我下,万分感谢!

this:指向当前对象的指针,并没什么特别的
如果不用这个关键字,怎么取当前对象的指针呢...?
上述代码中的this指向当前CDDBTestView类的对象,仅此而已

我觉得this关键字多数情况可用也可不用,因为在类函数中访问成员一般并不需要加上这个关键字,除非是有局部变量或参数名字和类成员变量一样,就需要加this以示区分,如下是完整代码示例:
#include <iostream>

class A{
int v;
public:
A(){v=3;}
void Set(int v){
std::cout<<"this->v:"<<this->v<<"\nv:"<<v<<'\n';
this->v=v;
}
};

int main(){
A a;
a.Set(4);
return 0;
}

只要 V 属于系动词,this都可以用在系表结构中做主语或其他名称的定语


1、系动词包括四大类


  • be动词(是/在)

  • 感知动词:如 look(看上去),seem(似乎),taste(尝起来),sound(听起来) ,eat(吃起来),等等

  • 变化动词:如 get(变为),come(逐步改变为)、go(慢慢变为)等等

  • 状态动词:keep(保持不变),stand(保持立的状态),lie(保持平放着的状态),等等


2、表语(C)的形式


  除了be 动词可以用名词作表语外,主要由形容词和分词充当,有的系动词后也可以用介词短语、不定式或与介词同形的小品副词(如 in, on, up, do