构造函数Initializer字段是否可以用类对象c++调用

Can constructor Initializer fields be called with class objects, c++

本文关键字:对象 c++ 调用 Initializer 字段 是否 构造函数      更新时间:2023-10-16

我有两个类,一个是"银行",一个"账户"。Account的构造函数接受一个int和一个字符串。银行应该有两个类型为"account"的对象。字段初始值设定项列表中的两个"account"对象是否可以动态分配,而不使用静态值?

这是我静态分配的代码

    class Bank
{
public:
    Bank():checkings( 500, "C"), saving( 300, "s"){} //predfined int and string
private:
    Account checkings;
    Account saving;
};

有可能做到这一点吗?我希望构造函数根据用户输入动态分配其字段。我不断地出错,所以我不确定我的语法是否错误。

    class Bank
{
public:
    Bank():checkings( int val, string s), saving( int val, string s){} //dynamic
private:
    Account checkings;
    Account saving;
};

另外,如何在.cpp文件中调用这种类型的构造函数?

不能将声明(如int val)放在成员初始值设定项中,只能将表达式(可以是/包括以前声明的变量)放在其中。

看起来你可能想要:

class Bank
{
public:
    Bank(int val, std::string s) : checkings(val, s), saving(val, s) {}
    // ...
};

或:

class Bank
{
public:
    Bank(int check_val, std::string check_s,
         int sav_val, std::string sav_s) :
        checking(check_val, check_s), saving(sav_val, sav_s) {}
    // ...
};