При изучении MS DirectX 11 DXUT пример, следующий код появился:Что означает: новый означает?
template<typename TYPE> HRESULT CGrowableArray <TYPE>::SetSize(int nNewMaxSize)
{
int nOldSize = m_nSize;
if(nOldSize > nNewMaxSize)
{
assert(m_pData);
if(m_pData)
{
// Removing elements. Call dtor.
for(int i = nNewMaxSize; i < nOldSize; ++i)
m_pData[i].~TYPE();
}
}
// Adjust buffer. Note that there's no need to check for error
// since if it happens, nOldSize == nNewMaxSize will be true.)
HRESULT hr = SetSizeInternal(nNewMaxSize);
if(nOldSize < nNewMaxSize)
{
assert(m_pData);
if(m_pData)
{
// Adding elements. Call ctor.
for(int i = nOldSize; i < nNewMaxSize; ++i)
::new (&m_pData[i]) TYPE;
}
}
return hr;
}
Это можно найти в DXUTmisc.h на линии 428 на моей версии DXSDK (June2010). Мне интересно об этом :: new вещь .... Я пытаюсь Google и поиск в переполнении стека, но кажется, что поисковый движок отбрасывает два двоеточия, когда я набираю «:: new» в строке поиска. ...
'::' является [оператором разрешения области] (http://en.wikipedia.org/wiki/Scope_resolution_operator) и сам по себе указывает глобальную область действия. Он гарантирует, что 'new' вызывается из глобальной области. – Joe