gpt4 book ai didi

c++ - 一种更简单的 pimpl 形式

转载 作者:太空宇宙 更新时间:2023-11-04 14:35:40 25 4
gpt4 key购买 nike

为什么不选择这种设计:

// A.hpp
class A
{
public:
void do_something();
};

// A.cpp
#include "A.hpp"
#include <vector>

std::vector<int> impl_database_for_do_something;

static void impl_helper_for_do_something(const std::vector<int>& database){}

void A::do_something(){ impl_helper_for_do_something(impl_database_for_do_something); }

而不是这个:

// A.hpp
#include <vector>
class A
{
public:
void do_something();

private:
std::vector<int> database_for_do_something_;
void helper_for_do_something(const std::vector<int>& database){}
};

我可以隐藏实现细节并使用源文件中定义的变量和静态函数来加速编译吗?如果不是,这个设计有什么问题(除了继承)?

最佳答案

在第一种情况下,整个程序只有一个 impl_database_for_do_something 实例。每个 A 实例都需要它的一个实例。因此代码在任何意义上都不是等效的。

关于c++ - 一种更简单的 pimpl 形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5885723/

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