我正在学习一个C ++开源项目代码,该代码的类定义如下:
class MarginStacker : public QWidget
{
Q_OBJECT
friend class MarginStackerPrivate;
public:
...
};
MarginStackerPrivate类在具有MarginStacker类实现的同一源文件中定义(并同时实现),如下所示:
class MarginStackerPrivate : public QObject {
Q_OBJECT
public:
QMap<QodeEdit::Margin, AbstractMargin*> margins;
MarginStacker* stacker = nullptr;
QHBoxLayout* layout = nullptr;
CodeEditor* editor = nullptr;
QTimer* updateLayoutTimer = nullptr;
MarginStackerPrivate( MarginStacker* _stacker )
: QObject( _stacker ),
stacker( _stacker ),
layout( new QHBoxLayout( stacker ) ),
editor( 0 ),
updateLayoutTimer( new QTimer( this ) )
{
Q_ASSERT( stacker );
// more implementation code here
...
};
在这个开源项目中,这种方法已经在其他几个地方使用过。这究竟有什么优势?在C ++中是否有这种方法的名称?