每个类对象都有一个this指针,那程序怎么知道this究竟指向谁呢?(新手问)
int CTestView::OnCreate(LPCREATESTRUCT lpCreateStruct) {
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your specialized creation code here
m_btn.Create("按钮",WS_CHILD | WS_VISIBLE| BS_AUTO3STATE,CRect(0,0,100,100),this,123);
return 0;
}
这是一个很简单的MFC程序,就是在一个单文档应用程序的视图窗口上产生一个按钮,以上是实现代码。
CButton::Create
BOOL Create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );
第四个参数应该是这个按钮附属于哪个父窗口的指针。程序中直接用了this,说这个this就直接指向了CTestView。
既然每个类对象产生后都有一个自己的this指针,那在“m_btn.Create("按钮",WS_CHILD | WS_VISIBLE| BS_AUTO3STATE,CRect(0,0,100,100),this,123);
”这行代码的第四个参数中,为什么this就指向CTestView,而不是我的CButton对象m_btn呢?
加入我之前还有定义的其他类对象,this指针岂不更多,我怎么知道用this的时候,this究竟指向谁呢?
另外,在网上搜索时看到一段话:
“读者可能觉得this指针在编程时没有实际意义。实际上,this指针在Windows编程中却是相当有用的。例如,当用其他类的成员函数时,如果想得到主调用函数的对象的句柄(如Window中的窗口、控件、设备或文件等),可以使用this指针。因为在其他类的成员函数中,主调用函数的对象不在作用域内,而this指针可用来作句柄”
怎么理解最后一句话呢?
烦高人详解,提前道声谢了!