Nat*_*222 1 c++ windows direct2d
我正在关注D2D示例,其中出现了以下代码:
if(!(D2D1_WINDOW_STATE_OCCLUDED & m_renderTarget->CheckWindowState()))
{
m_renderTarget->BeginDraw();
Draw();
if(m_renderTarget->EndDraw() == D2DERR_RECREATE_TARGET)
{
m_renderTarget.Reset();
Invalidate();
}
}
Run Code Online (Sandbox Code Playgroud)
我注意到m_renderTarget使用了 - >(我忘记了它的名字),后来又使用了点运算符.出于某种原因,我认为使用只能使用一个或另一个,具体取决于它是引用类型还是值类型.显然我认为错了,但找不到关于何时使用每个操作员的任何信息(或更多关于点,每个操作员的目的.)
任何澄清将不胜感激.
我认为使用只能使用一个或另一个,具体取决于它是引用类型还是值类型
通常,是的.
两者都在代码中的同一个对象上使用的事实表明它是一个"智能指针",即一个具有重载的对象类型operator->,允许它像指针一样运行.
m_renderTarget->BeginDraw();
Run Code Online (Sandbox Code Playgroud)
这使用它operator->来访问它指向的对象的成员.BeginDraw是指向对象的成员函数,而不是m_renderTarget.
m_renderTarget.Reset();
Run Code Online (Sandbox Code Playgroud)
这会访问m_renderTarget自身的成员,而不是它指向的对象.通常,reset()成员使用空指针替换指向的对象.
因此,在第一种情况下,->语法对其指向的对象执行某些操作,而在第二种情况下,.语法对对象本身执行某些操作.
| 归档时间: |
|
| 查看次数: |
151 次 |
| 最近记录: |