关于C++模块化的最佳实践
Best practice about 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);
}
}
类定义中实现的所有函数都是内联的。所以,如果您将这些方法放在类定义中,您将使它们全部内联。这不是等效代码。
C++中的最佳实践是尽可能多地移动到.cpp文件中的定义,并尽可能简单地保留.h文件。如果头文件中有#include
指令,请减少该数量。尽可能使用类和结构的前向声明,而不是完整定义。
遗憾的是,这些指导原则不适用于模板,这就是C++编译如此缓慢的原因。
相关文章:
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- 在c代码之间共享数据的最佳方式
- 使用std::source_location报告错误的最佳实践
- 派生类销毁的最佳实践是什么
- 将寄存器设计成可由C和C++访问的外设的最佳实践
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- 使用QQuickFramebufferObject时同步数据的最佳方式是什么
- 在C++中向零方向近似的最佳方法
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么
- 从嵌套在std::映射中的std::列表中删除元素的最佳方式
- 如果条件为TRUE(最佳方式?),则在do while循环中后置增量
- 检测win32服务创建和删除的最佳方法
- 在reactor中存储eventHandlers的最佳方式是什么
- 在C++中样板"冷/never_inline"错误处理技术的最佳方法是什么?
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 在AVX通道中混洗的最佳方式
- 程序顶部的声明与定义(最佳实践)
- 别名模板的专业化 C++11 中没有开销的最佳替代方案