gpt4 book ai didi

c++ - C++ 中的堆栈对象重新实例化

转载 作者:太空宇宙 更新时间:2023-11-03 10:21:16 25 4
gpt4 key购买 nike

我想使用相同的变量,但我想重新实例化它。我如何在 C++ 中做到这一点?这是一个简单的例子。我尝试重新实例化 t1,但它无法编译。 (注意t1存放在栈中,我不是问动态内存分配怎么做)

class Table
{
private int feet;
public Table(int x)
{
feet=x;
}
}

Table t1(3);
t1(4);

最佳答案

答案是一种叫做赋值的美妙语言特性。

简而言之,您可以使用 = 符号更改变量的值——即使是您自己定义的类型的变量。

事实上,您的代码已经在使用赋值,即在构造函数中。

在下面的示例中,我用初始化器替换了原始代码的赋值,因为初始化器通常更可取(在没有充分理由使用赋值来初始化成员时选择它们)。

更新 t1 值的赋值,有效地“重用”t1,可以这样进行:

class Table
{
private:
int feet;
public:
Table( int x ): feet( x ) {}
};

Table t1( 3 );
t1 = Table( 4 );

注意 1:可以定义类型以禁止赋值。

注意 2:因为您已经定义了一个转换构造函数,一个接受单个参数的构造函数,并且由于该构造函数不是显式,上面的赋值可以更简单地(但可能不太清楚)表示为……

t1 = 4;

...结果完全一样。

注意 3:您提供的代码不会编译,它只是“像”C++,而不是 C++。我已经修复了错误(我想,但我懒得通过编译器运行它)。但一般来说,并不总是能够知道甚至猜测所提供代码中的错误是否与问题有关,因此请复制并粘贴真实代码。

干杯,

关于c++ - C++ 中的堆栈对象重新实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4357323/

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