我正在读一本书,其中一个窗口类的构造函数不直接初始化所有实现,而是调用一个调用另一个等的函数...
e.g。
window::window(T&t, X&x)
{ setup(t, x);}
void window::setup(T&t, X&x)
{
//initializing implementation details, size, title etc...
create(t, x);
void window::create(T&t, X&x)
{
//initializing the library Window
//...
}
与析构函数相同,callind一个destroy()函数,而不是在析构函数本身中这样做。
这只是风格问题还是有实际用途?
答案 0 :(得分:2)
如果成员的初始化是作为一个函数实现的,那么该函数可以在多个构造函数中重用。公共初始化函数允许默认构造函数将对象保留在稍后可以初始化的部分初始化状态。这可以允许类是DefaultConstructible,如果不可能的话,同时仍然提供使用非默认构造函数的完全初始化选项。
实现destroy函数并在析构函数中调用它允许对象的用户在销毁对象之前释放由对象管理的资源。这允许使用多组资源重用对象内存(次要优化)。
答案 1 :(得分:0)
遵循Don't Repeat Yourself (DRY)的原则,具有实际用途。你应该阅读Martin Fowler on Function Length。