C++ 中有没有一种方法可以通过指定列表中的每个成员变量来构造对象?

Is there a way in C++ to construct an object by specifying each member variable in a list?

我记得在大学里有一种方法可以初始化一个对象,编写一系列成员变量初始化,用逗号分隔,就像下面的代码示例一样,但我不记得它是如何调用的。

class A
{
public:
    string s1, s2, s3;
    A()
    {

    }
};
#include "A.h"

int main()
{
    A a
    {
        s1 = "String1",
        s2 = "String 2",
        s3 ="String 3"
    }
}

我还应该输入什么才能让像列表这样的构造函数工作?

您的代码,具有适当的构造函数:

class A
{
    public:
    string s1, s2, s3;
    A(string a, string b, string c): s1{a},s2{b},s3{c}
    {

    }
};

现在您可以将此 class 的对象初始化为:

A a("String1","String2","String3");

有兴趣的可以参考这里:https://en.cppreference.com/w/cpp/language/initializer_list

如果你想要命名参数,那么 C++ 没有命名参数,这里有一个可能在未来实现的提议(它不在 C++17 中):http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4172.htm

如果您仍然需要命名参数,请阅读 FluentCpp 文章了解如何让它工作:https://www.fluentcpp.com/2018/12/14/named-arguments-cpp/

C++ 中没有,但 C99 支持此功能(指定初始化程序)。

struct point { int x, y; };

struct point p = { .y = yvalue, .x = xvalue };

https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html