<分区>
我有以下类(class):
class ArithmeticExpression
{
public:
ArithmeticExpression(std::string expr);
}
class Command
{
public:
Command(){};
//this is a virtual class
}
class CommandAssign : public Command
{
private:
ArithmeticExpression expr;
public:
CommandAssign();
CommandAssign(ArithmeticExpression);
}
现在,当我尝试为 CommandAssign 类编写构造函数时:
CommandAssign::CommandAssign(ArithmeticExpression expr)
:Command()
{
this -> expr = ArithmeticExpression(expr.getExpr());
}
我得到错误:
没有用于调用“ArithmeticExpression::ArithmeticExpression()”的匹配函数 :命令()
显然我可以通过在 ArithmeticExpression 类中添加一个不执行任何操作的空构造函数来解决这个问题。这个空的构造函数有什么特别之处可以让它工作?我没有明确地在任何地方打电话。你总是需要在 C++ 中定义一个空的构造函数吗?
我想强调的是,虽然从标题来看我的问题似乎与一些用户建议的重复问题相似,但我正在寻找的答案并不存在。我只是想了解调用构造函数时会发生什么,以及如何避免定义无用的默认构造函数,我知道在我用参数定义一个构造函数的情况下,编译器不会自动定义它。