- 主题:大家对开发人员写带类的C怎么看
继承vector考虑吗?直接得到所有vector的接口。根据需要,添加新的接口。
class YourManyData : public vector<YourData>
【 在 toutouqi 的大作中提到: 】
: 某个类里有个vector变量,需要用到读写操作,为了封装,加了一个const vector&的get函数,再加了一个set函数,为了清空,又加了一个clear函数。不少人倾向于只接一个非const的get函数(或者直接public该变量)。本来100行可以搞定的类,写下来1000行。
: :
--
FROM 1.80.241.*
这是……
不建议……
这都是论断。理由呢?—— 基虚析构算一个。
【 在 here080 的大作中提到: 】
: 这是非常糟糕的设计。
: * 不建议继承的std容器类型。
: * 没有特殊理由,继承结构里的基类析构函数必须要求是虚的。
: ...................
--
FROM 1.80.241.*
这样啊。新近大家推崇的谷歌的还是fb的库,里面有vector没,析构是虚的不。ABSL或者Folly,不确定拼对了没。
【 在 here080 的大作中提到: 】
: 因为C++标准不支持这么干。
: STL里的东西的实现可以随意变动的。你的继承代码理论上分分钟可以停止工作。
:
--
FROM 1.86.0.*
YourManyData is-a vector<YourData>
我念着非常通顺啊!为什么你觉得不是呢?
我的意思,如果Absl或者谁,把vector的析构实现为虚函数,就完美了。
你说得唯一阻碍就没了。
【 在 here080 的大作中提到: 】
: 我没懂你的意思。
: 这些库使用vector很正常,但我相信应该不会去继承vector.
: 像你提出来用继承的原因只是为了省掉几个accessor,是典型的滥用继承。
: ...................
--
FROM 1.85.206.*
我现在工作的平台,实现了自己的xvector,定义了继承自
xvector<T>的类。我回去查查xvector的析构有没有虚。
所以,我想问的absl里有没有absl_vector。如果你见多识广的话。
但这么简单的意思,用了三个回复没传达过去。到此为止,忘掉absl。
组合是灵活一些。我同意你。我的提议,仅限于那楼作者,苦于
把所有vector接口,又加了一遍。
【 在 here080 的大作中提到: 】
: absl库不是标准库。它不改变标准库的实现。
: 光一个名字太虚。你给个具体例子我来给你分析。
:
--
FROM 1.85.206.*
「系统级内存泄漏大了导致不能复现的闪崩」
你这话就是玄学,是流行于程序员的神秘主义,非常有害。
系统级内存泄漏,定义是什么? 没有释放系统资源吗?
泄漏与double free/use after free是互斥的。泄漏不会崩,后二者会。
如果用智能指针导致了闪崩,多半是触发了隐藏bug。use after free。
最多项目用了tcmalloc之类,再加上多线程,出了crash不好查,
就怀疑与智能指针有瓜葛。
dumb 派对smart 派最常见的指责就是:代码本来好好的,你用了智能指针就……
【 在 somebody 的大作中提到: 】
: 你太高看那帮菜鸟了,只要程序不崩,能出正确结果,内存泄漏他们才不管,非要在系统级内存泄漏大了导致不能复现的闪崩才会去看问题,那时候问题又不是他们这种水平能轻易解决的。如果有对象所有权和生命周期的概念,裸指针都不会有问题。
: 对于稍复杂的流程,对象创建和对象析构一般不在同一函数,那样我看不出unique_ptr有解决问题的优势。考虑其只可移动不可复制,那帮菜鸟只会嫌烦而不是考虑这样有什么好处。
--
修改:DoorWay FROM 1.85.206.*
FROM 1.85.206.*
你是小树林放风筝,被他绕住了。
黑板垂直于长江,这话是没道理的。甭管说是黑板的锅,还是长江的锅,都不对。
同样,说「系统级的泄漏导致崩崩溃」,这话本身没道理。
他主要批评了两个对象,一个是智能指针,一个是低水平的同事。
我的回复并不出这两个范畴。——给你的严谨点赞,搞清楚定义再讨论,
是非常好的习惯。我也常说,要养猪,先搞清楚什么是猪。
【 在 here080 的大作中提到: 】
: 他没说是智能指针的锅吧?
:
--
FROM 1.85.206.*
系统级泄漏,
你能给出具体的定义吗?再给出个泄漏导致崩溃的例子?
你要么是水平太高了,不明白他的神秘主义措辞。要么是
定向往我这小树林缠绕啊!或许不是观点之争,是态度之争了?
我的某些措辞引起了你情绪上的不适?
【 在 here080 的大作中提到: 】
: 我没看出来这层意思。在我的意识里,系统级的泄漏导致崩溃在不用智能指针项目里更容易出现。
:
--
FROM 1.86.0.*
哈哈,别打趣。我俩这争一争,好歹有点活力,忘了柴米油盐。
你一下给拉回来了。
【 在 fanci 的大作中提到: 】
: 别争了,比工资吧!工资高的给我介绍个工作!
--
FROM 1.86.0.*
因为你表现出了不合常规的理解困难症状。
也一直忽视屋子里的大象:系统级内存泄漏,指的是什么呢?为什么会导致崩溃呢?
【 在 here080 的大作中提到: 】
: 我不太明白你是怎么扯到情绪问题?
--
FROM 1.86.0.*