C++20允许不使用构造函数,而是在构造过程中直接指定成员进行初始化
#include <iostream>
#include <string>
using namespace std;
class A
{
public:
int a;
string b;
};
void pA(const A& a)
{
cout<<a.a<<" "<<a.b<<endl;
}
int main()
{
A a1{.a = 5}; //直接初始化成员a
A a2{.b = "hi"}; //直接初始化成员b
A a3{.a = 88, .b = "bye"}; //直接初始化成员a和b,顺序必须与声明的顺序一致
pA(a1);
pA(a2);
pA(a3);
return 0;
}
运行程序输出:
5
0 hi
88 bye
指定初始化有一个限制,就是仅能应用于不包含( 构造函数、private和protect、基类、虚函数 )的类、结构体和联合体等聚合对象。