引用:
作者: sjinny 我还没有足够的经验,不过根据我目前的了解,我对某些技术持比较保守的态度。
不过,不管编译器怎么优化,花括号里的那些变量是不会泄露到外面去的。至少在编写代码时是可以这么认为的吧。 |
这个还真不一定,用 C++ 的应该知道 RVO 吧?你想想看这算不算把一个“被程序员写在一对花括号里”的对象,移到了花括号之外。
引用:
|
作者: sjinny 我一直没对确定性定过概念,如果要定概念,那就是:程序员对所采用的技术的运行情况的了解程度(及了解的难易程度),这就是确定性。
虽然我们无法改变栈的行为,但是我们能够很容易的了解及预测栈的行为,并且栈的行为在代码里是显式表达的(用花括号对)。
确定性带来的好处,首先是我们能够比较容易的理解自己所写出的程序,而这又是程序的维护和复用的前提。并不是说gc完全无法使用,但是如果能用栈的情况下仍然使用gc,那么用花括号所表达的那些信息就丢失了,这对于以后的开发是不利的。 |
你这个确定性的概念倒是有趣。不过要说容易理解和预测程序的行为,其实用 GC 的更有优势。为啥呢?因为有了 GC 的支持,书写程序的时候可以广泛地使用引用语义,简单地说就是一个函数在接受一个对象作为参数或是返回一个对象的时候,实际上是在接受和返回一个指向对象的指针。这样做可以避开拷贝构造的问题,程序的行为要简单而且容易预测得多了。