gpt4 book ai didi

c++ 我应该使用前向声明吗?

转载 作者:太空狗 更新时间:2023-10-29 20:30:07 25 4
gpt4 key购买 nike

我发现了这个问题 When to use forward declaration?这很有用,但它是描述性的,而不是规定性的。

我的场景通常是我使用指向另一个类的指针作为类成员或函数参数,所以我在 header 中需要的只是一个前向声明(顺便说一句,如果我要切换到使用 boost shared_ptr 的它们是否与使用前向声明兼容?)。目前我只包括 header ,但现在我想知道是否应该使用前向声明。

所以我的问题是,如果我可以对类使用前向声明,应该吗?我希望这个问题不是主观的,但如果没有最佳实践答案,那么使用前向声明的优缺点是什么?

更新

只是为了扩展 shared_ptr 问题(我现在不使用它们但正在考虑切换)。如果我要使用它们,我想我会在类中使用 typedef'ing shared_ptr 类型的做法。例如:

class Customer
{
public:
typedef std::tr1::shared_ptr<Customer> SharedPointer;

Customer() {}
virtual ~Customer() {}

virtual std::string GetName() const;
};

看起来这可能会使事情变得更加困惑。前向声明会有问题吗?如果有,是否有简单的解决方法?

最佳答案

您可能想要这样做,因为包含这些文件会使编译时间更长,但根据您有多少个案例以及您的代码库有多大,这很可能不会成为问题。

另一件需要考虑的事情是依赖关系。当您只需要指针定义时,您不想因为更改了包含文件而重新编译所有代码。

所以我的(主观)回答是是的,你应该

关于c++ 我应该使用前向声明吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7922645/

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