liuhan907 最近的时间轴更新
liuhan907

liuhan907

V2EX 第 367313 号会员,加入于 2018-12-02 17:11:50 +08:00
liuhan907 最近回复了
@movq
表现不同的原因是虽然 C++ 的 print 方法是 virtual 修饰的,但是 C++ 在执行继承层次的时候 vtable 是分步构造的。这导致在执行父类构造方法的时候 vtable 是指向父类的,因此 virtual 修饰的方法仍然是调用父类而不是子类。在父类构造完成后,执行子类构造方法的时候才会将 vtable 指向子类。
而 Java 的类似功能的指针初始化会在构造方法执行前就把整个虚表指针设置完,因此父类调用遵循 virtual 修饰语义。
其实我倒是认为 Java 的选择更好一点,因为没有违反 virtual 语义,而 C++ 的话其实是违反了 virtual 语义的:virtual 修饰的方法没有多态性。
Java 里你可以通过用别的方法简单的在父类调用父类自己的方法,即使是 virtual 修饰的;反过来 C++ 里父类构造想要调用子类重写,我还真不知道什么简单的办法,都比较 hack 。比较一下我觉得 Java 的选择可能是大部分场景下的更优解。
( ps:但是 C# 才是 yyds ^_^
如果不是这样的话,那要怎么实现 abstract 方法呢?
18 天前
回复了 csfreshman 创建的主题 程序员 C++求教:如何优雅实现运行时类型选择
运行时没有办法,你可以用模板加 sfinae 来编译期决定类型,用继承添加类型,运行时根据传入类型决定创建的实际子类
29 天前
回复了 rocododd 创建的主题 问与答 今天做了胃肠镜,整个人都不好了
那我就猜一个食管平滑肌瘤吧。
@SQLException traefik 的具体生态我觉得你就看它的文档和 GitHub 自己评估吧 2333333
29 天前
回复了 w595997332 创建的主题 问与答 如何团队共用一个储存设备
买一个 qnap 的双盘型号,放两块 SSD ,组一个 raid1 ,开 SMB ,完事。
你要上生产,那就用 traefik
@mxT52CRuqR6o5 core 也没什么不好,scale 目前在性能上还是比 core 差一些。如果是纯存储的话 core 我反而觉得更合适。
TrueNAS 唯二的缺点,硬件相对更贵,扩容相对麻烦。如果你不在乎这两点那当然首选 TrueNAS 。Unraid 的问题是想增加性能很难,基本只能上 SSD 才行。另外 Unraid 配置 raid 极为麻烦。
考虑你要 raid ,要万兆,要 NFS 这种纯同步写的文件服务。我觉得你还是考虑 TrueNAS ,配置好 SLOG 。
关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2315 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 36ms · UTC 16:29 · PVG 00:29 · LAX 08:29 · JFK 11:29
Developed with CodeLauncher
♥ Do have faith in what you're doing.