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

时间:2017-06-19 16:12:31

标签: c++ oop struct constructor

我有一个“代表”银行的代码。它由日期和个人信息两种结构组成。有关银行帐户的信息是在课堂上组织的。我需要编写一个带有预定义参数的默认构造函数。该类包含struct类型的数据成员,我不知道如何初始化struct类型的数据成员。这是我的代码。

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;
};

我很感激每一个帮助。提前致谢。

2 个答案:

答案 0 :(得分:0)

结构和类在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};
};

答案 1 :(得分:0)

与初始化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代替char数组。