我正在维护一个遗留的 MFC 应用程序,我看到的模式与Windows 下的面向对象编程中的模式完全一样,其中相关部分是:
Persview.h
#ifndef _DEBUG // debug version in persview.cpp
inline CPersDoc* CPersView::GetDocument()
{ return (CPersDoc*)m_pDocument; }
#endif
Persview.cpp
#ifdef _DEBUG
CPersDoc* CPersView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CPersView)));
return (CPersView*)m_pDocument;
}
#endif //_DEBUG
如果我在互联网上搜索它,我会看到该模式被广泛应用,所以我认为它是向导生成的代码。
我的问题是:在 .h 文件中内联发布版本并在 .cpp 文件中进行调试是否有任何优势或其他充分理由?为什么不将两者放在同一个文件中呢?