我很好奇,如果现代的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 ++规范中?
答案 0 :(得分:4)
看看designated initializers。自C99以来,它们就一直使用C语言,但并未添加到C ++中。现在计划将它们添加到C ++ 20中,但有一些限制。示例:
struct db_config
{
std::string host = "localhost";
std::string port = "5432";
std::string dbname;
std::string user;
std::string password;
} config = {
.dbname = "test",
.user = "admin",
.password = "v3ry$3cur3"
};
但是,某些编译器(例如GCC)已经允许在C ++代码中使用C指定的初始化程序作为扩展。