gpt4 book ai didi

c++ - 我应该使用哪一个以及为什么 : {} vs = in c++

转载 作者:行者123 更新时间:2023-12-02 01:26:22 25 4
gpt4 key购买 nike

我在观看 MVA(Microsoft Visual Academy)的教程时遇到了这两个运算符,即 {}= 将值传递给变量。我做过 C 编程,所以我非常了解赋值运算符 =。但 {} 并不是我迄今为止使用过的任何编程语言。

Kate 正在教授 C++ 类(class),因此她告诉我们 {} 用于复制。

但是我在下面的类中使用了运算符 {},当我尝试执行此操作时,它显示了一些错误:

this->_width{new_width};

而下面的一个有效:

this->_width = new_width; 

为什么会这样呢?我还使用 {} 在构造函数中传递值,但它们工作得很好。唯一的问题是成员函数。

class Rectangle
{

public:
void resize(int new_height, int new_width) { this->_width{new_width} ; this->_height{new_height} }; //member function

Rectangle(): _width{} , height{} {} //constructor

private:
int _width;
int _height;

};

最佳答案

{} 可用于在 C++11 中初始化变量,其方式与在 C 中用于初始化数组和结构的方式相同。

引入这一点主要是为了提供语言语法的一致性(使用 {} 初始化将在所有上下文中工作,而使用赋值运算符或 () 初始化将工作在特定的上下文中。

列表初始化还有一个优点,因为它可以防止缩小范围 - 即,它可以防止您在需要 double 时提供整数,或者在需要整数时防止提供短整型。这样可以帮助减少错误。

请注意,{} 不能用于将值传递给函数 - 只能用于构造新对象。

This page is also worth reading

关于c++ - 我应该使用哪一个以及为什么 : {} vs = in c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27754697/

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