结构类型成员的默认构造函数中的默认参数

Default arguments in default constructor for members of type struct

本文关键字:默认 参数 构造函数 类型 结构 成员      更新时间:2023-10-16

我有这个代码"用于"一家银行。它分为日期和个人信息两种结构。有关银行帐户的信息按类进行组织。我需要编写一个带有预定义参数的默认构造函数。该类包含一个结构类型的数据成员,我不知道如何初始化结构类型的数据成员。这是我的代码。

struct Date {
    int day, month, year;
};
struct Person {
    char name[20];
    char surname[20];
    int IDnum[13];
    Date dateBirth;
};
class BankAccount {
public:
    BankAccount( ????Person p????, int s = 0, bool em = true, int sal = 0 ) {
        ??sth for Person p I guess??
        sum = s;
        employed = em;
        salary = sal;
    }
private:
    Person person;
    int sum;
    bool employed;
    int salary;
};

我将不胜感激每一个帮助。提前谢谢。

这与初始化 struct/class 变量时使用的语法相同。

BankAccount(Person p = {"John", "Doe", {1,2,3,/*...*/}, {1,1,2000}}, int s = 0, bool em = true, int sal = 0 )

如果缺少某些初始值设定项,如 Person p = {"John", "Doe"} ,则所有缺少初始值设定项的字段都将初始化为零。

这意味着您甚至可以Person p = {}将所有字段设置为零。

或者你可以写Person{...}而不是{...},这就是@Curious所做的。


另外,如果您使用的是C++,请使用 std::string s 而不是char数组。

结构体和类在C++中几乎是一回事,结构体可以有构造函数,这是在这种情况下你应该做的

class BankAccount {
public:
    BankAccount(const Person& p = Person{...}, int s = 0, bool em = true, int sal = 0 )
            : person{p}, sum{s}, employed{em}, salary{sal} {}
private:
    Person person;
    int sum;
    bool employed;
    int salary;
};

您还可以为类定义本身中的成员变量提供初始值设定项,例如

struct Something {
    int integer{1};
    bool boolean{false};
};