gpt4 book ai didi

c++ - 内联或不内联

转载 作者:可可西里 更新时间:2023-11-01 15:39:48 27 4
gpt4 key购买 nike

我最近一直在写一些类(class);我想知道这是否是不好的做法、对性能不利、破坏封装或者是否有任何其他本质上与实际定义 header 内的一些较小的成员函数有关的坏事(我确实尝试过谷歌!)。这是我编写的 header 的一个示例,其中包含很多这样的内容:

class Scheduler {
public:
typedef std::list<BSubsystem*> SubsystemList;

// Make sure the pointer to entityManager is zero on init
// so that we can check if one has been attached in Tick()
Scheduler() : entityManager(0) { }

// Attaches a manager to the scheduler - used by Tick()
void AttachEntityManager( EntityManager &em )
{ entityManager = &em; }

// Detaches the entityManager from a scheduler.
void DetachEntityManager()
{ entityManager = 0; }

// Adds a subsystem to the scheduler; executed on Tick()
void AddSubsystem( BSubsystem* s )
{ subsystemList.push_back(s); }

// Removes the subsystem of a type given
void RemoveSubsystem( const SubsystemTypeID& );

// Executes all subsystems
void Tick();

// Destroys subsystems that are in subsystemList
virtual ~Scheduler();
private:
// Holds a list of all subsystems
SubsystemList subsystemList;

// Holds the entity manager (if attached)
EntityManager *entityManager;
};

那么,像这样的内联函数真的有什么错误的地方吗?还是可以接受的?

(另外,我不确定这是否更适合“代码审查”网站)

最佳答案

内联增加了耦合,增加了类中的“噪音”定义,使类(class)更难阅读和理解。作为一个一般规则,内联应被视为一种优化措施,并且仅在探查器说有必要时使用。

有一些异常(exception):我总是内联的虚拟析构函数如果所有其他功能都是纯虚拟的,则为抽象基类;只为一个空的文件创建一个单独的源文件似乎很愚蠢析构函数,如果所有其他函数都是纯虚函数,并且没有数据成员,析构函数不会改变其他事情正在改变。我偶尔会提供内联“结构”的构造函数——所有数据成员都在其中的类是公共(public)的,没有其他功能。我也不严谨关于避免在源文件中定义的类中内联,而不是标题——耦合问题显然不适用于那种情况。

关于c++ - 内联或不内联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6895408/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com