我有一个“代表”银行的代码。它由日期和个人信息两种结构组成。有关银行帐户的信息是在课堂上组织的。我需要编写一个带有预定义参数的默认构造函数。该类包含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;
};
我很感激每一个帮助。提前致谢。
答案 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
数组。