【发布时间】:2021-09-21 11:55:21
【问题描述】:
锻炼
使用第 2.6.1 节(第 72 页)中的第一个版本的 Sales_data,
解释下面的初始化。找出并解决任何问题。
我的代码:
#include <iostream>
#include <string>
using namespace std;
struct Sales_data
{
string bookNo;
unsigned sold_units = 0;
double revenue = 0.0;
};
int main()
{
Sales_data item = { "978-1234567",25,15.99 };
cout << item.bookNo << ' ' << item.sold_units << ' ' << item.revenue << endl;
system("pause");
}
我首先认为编译器会给我一个错误,因为有类内的初始值来防止“Sales_data”成为一个聚合类。但事实并非如此。
运行代码后,我认为编译器使用初始化列表构造了一个临时对象,将临时对象复制到“item”,最后将临时对象销毁。
我的问题是:是因为我在 Visual Studio 2017 上编码,编译器没有向我发送错误吗?以及上面的代码发生了什么。
【问题讨论】:
标签: c++ visual-studio c++11 visual-studio-2017