- 主题:C++鼓励使用值语义,我觉得有些过了。
使用值语义,可以避免大量堆管理开销和程序员的内存管理负担,可以使复杂对象的内存布局更高效,但是也带来和很多问题。
值语义需要定义拷贝和赋值的行为,增加了编程工作量和引入bug的概率。
而大量的拷贝和赋值又带来额外开销,因此大量使用“引用”,避免拷贝发生
进一步又引入了右值印用和move语义,试图尽量用move取代copy。
另一方面,传统C++的虚拟多态机制需要通过指针来实现,而现代C++鼓励使用的值语义阻碍了多态的实现。
不得已,又大量的通过模板系统部分代替多态的功能,导致标准库中模板泛滥。
C++极致追求性能,可以理解,但是为了性能把语言搞的对普通程序员越来越不友好,是不是得不偿失?
牺牲一些效率,实现一个基于虚拟多态的简洁优美的标准C++基础库,是不是更有市场?
哈哈,其实我想要的就是一个使用C++语法的delphi, 或者直接编译本地代码的C#,
--
FROM 123.112.70.*
牺牲一点,还是比java强很多啊
【 在 GoGoRoger 的大作中提到: 】
: 牺牲性能,跟Java Go比还有啥优势。。。。cpp现在存在的唯一价值就是zero overhead。。。。
:
: 发自「今日水木 on M2007J17C」
--
FROM 123.112.70.*
是的。
使用引用的问题就是,实际上使用了指向某个地方的指针,程序员却经常不觉得自己在使用指针。
引用穿透了方法的边界,指向方法内部,使用返回值的结果就跟方法的实现相关了。在特别情况下,就可能引起混乱。
【 在 allegro 的大作中提到: 】
: 我现在也是越来越倾向于用值而不是引用。
: 尤其是lambda+异步编程满天飞的时候。确保生命周期即使自己能做到,其他维护人员也不见得能做到。
: 而且现在编译器的copy elision和move语义都越来越普及。
: ...................
--
FROM 123.112.70.*