关于C++模块化的最佳实践

Best practice about C++ modularity

本文关键字:最佳 C++ 模块化 关于      更新时间:2023-10-16

即使定义只有一行(如下面代码中的构造函数或int value() const;),也要始终将声明和定义分开,这是一种好的做法吗?

我的目标是学习C++,同时融入最佳实践。因此,如果这个代码中有什么需要改进的地方,请告诉我

//counter.h
#ifndef COUNTER_H
#define COUNTER_H
#include <QObject>

class Counter : public QObject
{
    Q_OBJECT
public:
    Counter();
    int value() const;
public slots:
    void setValue(int value);
signals:
    void valueChange(int newValue);
private:
    int m_value;
};
#endif // COUNTER_H

-

//counter.cpp
#include "counter.h"
Counter::Counter()
{
    m_value = 0;
}
int Counter::value() const
{
    return m_value;
}
void Counter::setValue(int value)
{
    if(value != m_value)
    {
        m_value = value;
        emit valueChange(value);
    }
}

类定义中实现的所有函数都是内联的。所以,如果您将这些方法放在类定义中,您将使它们全部内联。这不是等效代码。

C++中的最佳实践是尽可能多地移动到.cpp文件中的定义,并尽可能简单地保留.h文件。如果头文件中有#include指令,请减少该数量。尽可能使用类和结构的前向声明,而不是完整定义。

遗憾的是,这些指导原则不适用于模板,这就是C++编译如此缓慢的原因。