博文

Temporaries(2006-09-12 15:10:00)

摘要:临时变量(Temporaries)是编译器在计算表达式时所构造的变量。它与普通的对象相同,只是它由编译器控制,而不受程序员的控制而已。 临时对象在产生时并不调用构造函数,但在销毁时会调用析构函数。我个人的理解是:临时对象是对已有对象的复制,不会产生无效值,因为已有对象已经调用过构造函数了。为了效率,临时对象没有必要再调用一次构造函数。但析构不同,必须调用以释放一些资源。
补充:临时对象调用的是复制构造方法A(const A&),A为类名。 书上说临时变量应该是常量(const型),但好像并不是如此。或许常量只是一个建议,但并不一定实行。 class X{}; X f() {return X()} void g1(X&) {} void g2(const X&){} main() {        g1(f()); //书上说会编译错误,但我在VC上通过编译,且没有警告        g2(f()); //成功 }......

阅读全文(2145) | 评论:0