|
|
1
5
我认为这就是常量变量的作用:
|
|
|
2
4
我认为在有所有权语义的情况下使用引用有点奇怪。不 必要地 从各方面考虑,让它成为一个坏主意,但它确实对你不利。 我想我只在以下两种情况下使用引用作为成员: 因此,例如,工厂或服务对象之类的注入依赖项可能是合适的。与此相反,在C++中,您通常更喜欢用模板参数而不是对象注入依赖关系,因此问题不会出现。 我还发现,我使用C++的时间越长,我就越希望类型可以被分配,除非有一个很好的原因。以您想要的方式减少编译时依赖性的常用技巧是“Pimpl”,而不是“Rimpl”,这是有原因的。通过从一个对象成员切换到一个引用成员,您使您的类成为非默认可复制类,而以前它可能是可复制的。这个实现细节不应该约束类的接口。使用Pimpl,您可以干净地实现赋值和交换。使用这些引用,您必须分配或交换两个成员。如果第二次交换失败,您就失去了强大的异常保证:尽管如果您的CMemberX和CMemberY类没有失败赋值和交换,这并不重要。
|
|
|
3
2
Should I prefer pointers or references in member data? )在我看来,大多数人的意见(碰巧也是我的)是——不要。如果您不想更改指针,请将它们设置为常量-我不知道,在给定代码的情况下,它们如何可能为NULL。 |
|
|
4
1
使用前向声明时,唯一允许使用的是声明指向前向声明类型的指针。
简言之:要么您永远不必重新编译[您只是声明指向前向声明类型的指针],要么您总是必须重新编译,以防您实际使用CContainer。 |
|
|
5
1
史蒂夫·杰索普(Steve Jessop)已经顺便提到了pImpl成语,但我认为如果你还没有遇到它,你应该检查一下: Compilation Firewalls |
|
|
6
0
此外,还可以声明指针常量:
|
|
7
0
你并不是在给自己买东西。
但是您正在堆积大量需要维护的其他代码。
如果这些对象是自然成员,则将其保留为成员。
目前,版本2和版本3(问题代码)存在严重缺陷,唯一有效的版本是版本1。 在我看来,一个简单的事实是,版本1的维护成本将大大降低,因此推荐版本2或版本3都会适得其反。与您添加到代码中的复杂性相比,当成员发生更改时,编译一个以上类所需的额外时间相对较小。 另外,您在其他人的评论中提到,代码没有上面描述的那么干净。这只是强调了我的观点,这是一个糟糕的优化,它将使类很难正常工作并保持在该状态。 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |
|
|
tTt · 使用堆栈中的值重新分配指针 1 年前 |
|
|
manuel · 现代C中空指针的替代方案++ 1 年前 |