重新发现"对"的引用临时变量

时间:2016-07-25 07:37:41

标签: c++

这本书说:

enter image description here enter image description here

但是我用函数clone2

编写了一个程序

它没有任何错误。

书上说的还是正确的吗?

由于

2 个答案:

答案 0 :(得分:2)

这本书是正确的,尽管对于具有自动存储持续时间变量使用术语临时变量只会增加混乱。此外,本书似乎省略了程序行为未定义的事实。

因此,您的编译器可以做任何事情,包括给人的印象是您正在做的事情是合法的。

简短回答:不要这样做

答案 1 :(得分:0)

将在堆栈内存上创建/分配局部变量SELECT `e`.*, IF(at_name.value_id > 0, at_name.value, at_name_default.value) AS `name` FROM `catalog_category_entity` AS `e` INNER JOIN `catalog_category_entity_varchar` AS `at_name_default` ON (`at_name_default`.`entity_id` = `e`.`entity_id`) AND (`at_name_default`.`attribute_id` = '41') LEFT JOIN `catalog_category_entity_varchar` AS `at_name` ON (`at_name`.`entity_id` = `e`.`entity_id`) AND (`at_name`.`attribute_id` = '41') 。如果您使用某些局部变量调用另一个函数并为其分配值,它们将覆盖def save_entries(): #entry recieve point entry0.get(entry_values.append(int(juveniles_entry))) entry1.get(entry_values.append(int(adults_entry))) entry2.get(entry_values.append(int(seniles_entry))) entry3.get(entry_values.append(int(survival_rate_juveniles_entry))) entry4.get(entry_values.append(int(survival_rate_adults_entry))) entry5.get(entry_values.append(int(survival_rate_seniles_entry))) entry6.get(entry_values.append(int(birth_rate_entry))) entry7.get(entry_values.append(int(disease_trigger_point_entry))) 的内存。因此,如果您在调用newguy后访问变量,它可能会有效 - 但如果您在访问newguy之前调用其他函数,则可能无法获得clone2的原始内容。 这就是为什么这样做不是一个好主意; - )