有些情况下,编译器会创建临时的无名计算机对象。为一个类编写全局operator+之后,可以将这个类的对象和其他类型进行加法运算,只要其他类型可以转换为这个类的对象即可。
  第一个执行加法的代码通过参数创建了一个临时SpreadsheetCell对象;然后将myCell和临时对象作为参数调用operator+。结果保存在aThirdCell时。第二个执行加法的代码做了同样的事情,只不过必须强制转换为double,才能调用SpreadsheetCell的double构造函数。
  这个例子中的重点是:编译器生成了代码,为每个相加代码行创建了一个额外的无名的SpreadsheetCell对象。该对象必须调用其构造函数和析构造和销毁。如果还感到怀疑,可以在构造函数和析构函数中插入cout语句,观察打印输出。
  一般情况下,每当代码需要在较大的表达式中将一个类型的变量转换为另一个类型时,编译器都会构造临时计算机对象。此规则主要适用于函数调用。
  编译器会使用double构造函数从构造一个链式的SpreadsheetCell对象,然后把这个对象传入doSomethingO。注意,如果把const从s参数移除,那么再也不能通过常量调用doSomethingO,而是必须传入变量。
  一般来说,应该避免迫使编译器构造临时对象的情况。尽管有时这是不可避免的,但是至少应该意识到这项“特性”的存在,这样才不会为实际性能额分析结果而感到惊讶。
  编译器还会使用移动语义使临时对象的效果更高。这是要在类中添加移动语义的另一个原因。

聊天记录实时监控

★关于WorkWin公司电脑监控软件★

WorkWin的使命是打造Work用途的Windows 电脑系统,有效规范员工上网行为,让老板知道员工每天在做什么(监控包括屏幕、上网在内的一举一动),限制员工不能做什么(禁止网购、游戏、优盘等)。

WorkWin基于纯软件设计,非常容易使用,无需添加或改动任何硬件,使用一台管理机监控全部员工机电脑。历经南京网亚十余年精心打造,此时此刻每天都有成千上万企业电脑正在运行WorkWin,选择WorkWin选择“赢”。

WorkWin介绍

WorkWin监控首页 短视频讲解 下载免费试用版

版权所有,南京网亚计算机有限公司 。本文链接地址: 避免创建临时计算机对象