正文

Temporaries2006-09-12 15:10:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/yourtommy/18484.html

分享到:

临时变量(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()); //成功

}

阅读(2239) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册