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