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

时间:2015-12-11 06:53:09

标签: c++ modularity

即使定义只有一行,如下面的代码中的构造函数或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);
    }
}

1 个答案:

答案 0 :(得分:1)

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

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

唉,这些指南不适用于模板,这就是C ++编译速度太慢的原因。