【发布时间】:2018-12-24 06:45:30
【问题描述】:
我很好奇现代 c++ 标准人们是否考虑或添加了 C# 的“对象初始化器”语法。例如,在 C# 中,我可以在初始化期间像这样初始化对象的成员:
StudentName student2 = new StudentName
{
FirstName = "Craig",
LastName = "Playstead"
};
public class StudentName {
public string FirstName;
public string LastName;
};
如果标准人们计划将“对象初始化器”语法添加到现代 C++ 中,那将非常方便,即。 C++11、C++14、C++17、C++20等……
它目前是否存在于现代 C++ 规范中?
【问题讨论】:
-
this answer 说有一个 C++20 提案用于 C 风格的指定初始化器,但它与 C# 不同
-
这不是有效的 Java。
-
这有什么比使用构造函数更好的方法:
new StudentName( "Craig", "Playstead" )? -
@NeilButterworth 我认为您的示例已经展示了这一点。在一个类只是一个变量包的情况下,特别是如果它们具有通用类型,为它们命名是很好的。你怎么知道它不是
new StudentName("Playstead", "Craig")? -
@NeilButterworth 我的意思是当类型检查不能帮助您防止参数排序错误时,为它们命名很好。