gpt4 book ai didi

c++ - 是否有模仿临时变量的 C++ 变量类型?

转载 作者:可可西里 更新时间:2023-11-01 15:10:37 26 4
gpt4 key购买 nike

这确实是一个非常愚蠢的问题,答案可能是简单的“否”,但我会问以防万一,因为这样会很好。

我可以做到这一点,行为完全符合要求:

struct A { int x; };

A inc(A a) {
a.x += 1;
return a;
}

inc({ 1 });

{ 1 } 是临时的,它不会被重用,因为它已被 inc() 设置为无效(因为 move 构造函数的使用——如果我对此有误,请纠正我!)。

但是如果我不记得{ 1 } 应该代表什么怎么办,所以我为它做了一个变量,但我仍然想强制要求它不能使用了两次(我试图让它就像一个临时的,但命名):

A a = { 1 };
inc(a);
inc(a);

a 的引用类型没有变化会导致编译器提示双重使用——但是 move 构造函数已被 a 排除,因为它不是临时的。

有解决办法吗?

最佳答案

我认为没有相应的数据类型,但您可以使用最小嵌套 block 来限制变量的范围——我在我的代码中经常这样做:

{
A a = { 1 };
inc(a);
}
inc(a); //error, `a` is not in scope

关于c++ - 是否有模仿临时变量的 C++ 变量类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20835800/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com