c – 在cpp文件中声明转发的类定义,用于什么?
在.cpp文件中转发类定义有什么意义?
想象一下,我在另一个公共类中有一个私有类.我转发了私有类的定义,比如私有类. 将我的私有类的声明放在.cpp文件中是否有任何好处,或者我应该在我的公共class.h中坚持我的前向声明并将我的privateClass.h包含在cpp文件中? 解决方法
内部类和结构通常最好保持在公共头之外,以避免依赖和耦合.
如果stuff在公共头中,则意味着如果实现细节(在您的私有类/结构中)发生更改,则公共头必须更改.这很糟糕,因为客户端程序实际上需要重新编译(在ODR – 一个定义规则下)和各种实现定义的类/ vtable布局和/或名称修改后果. 一旦你可以避免取决于你的完整私有类型的定义,你将避免拥有所有不需要的依赖,导致 >缩短重建时间 前向声明的类在被定义之前被称为“不完整类型”(通常在私有头文件中或简单地在cpp文件本身中).在那之前,只允许地址,引用,通过引用传递或通过指针传递. 更新添加背景链接,因为这是一个受欢迎的答案: > Boost shared_ptr<> constructor requires complete type (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |