如何从C++;类构造函数作为此类方法的默认参数? 我想在C++中建立一些程序,但是我在OOP中是新手,我遇到了一个谷歌现在无法帮助我的问题。我认为C++是在14版本中,但是我仍然不确定如何在VS2017中检查这个。我想使用传递给类的构造函数的值作为同一类的另一个方法的默认值
特别是针对我的问题,我构建了一个简单的case程序,用于添加两个int,它位于三个单独的文件中,如下所示: main.cpp 加上这个如何从C++;类构造函数作为此类方法的默认参数? 我想在C++中建立一些程序,但是我在OOP中是新手,我遇到了一个谷歌现在无法帮助我的问题。我认为C++是在14版本中,但是我仍然不确定如何在VS2017中检查这个。我想使用传递给类的构造函数的值作为同一类的另一个方法的默认值,c++,oop,C++,Oop,特别是针对我的问题,我构建了一个简单的case程序,用于添加两个int,它位于三个单独的文件中,如下所示: main.cpp 加上这个 好的,如果在main.cpp中,我在示例plus.AddingResult(2,3)中手动传递值,我将得到5。我的问题是我想要得到方法,它将获取b或a和b值(或者在超级方法版本中,将手动获取b并从构造函数传递a)。我尝试了很多与指针或定义Set和Get方法相关的方法,但在我的实现中都失败了——我不是说它们错了,而是说我的实现错了。为了问题的明确性,我不会附加它们
好的,如果在main.cpp中,我在示例
plus.AddingResult(2,3)
中手动传递值,我将得到5。我的问题是我想要得到方法,它将获取b
或a
和b
值(或者在超级方法版本中,将手动获取b
并从构造函数传递a
)。我尝试了很多与指针或定义Set和Get方法相关的方法,但在我的实现中都失败了——我不是说它们错了,而是说我的实现错了。为了问题的明确性,我不会附加它们。首先,让我们给你的标识符起个更好的名字:
class Adder
{
int lhs_;
int rhs_;
public:
Adder(int lhs, int rhs);
~Adder();
然后,我们为成员函数add
定义一个变量,因为我们不能定义非静态成员变量作为默认值的参数:
int add(int lhs, int rhs);
int add(int lhs);
int add();
};
然后,我们需要“保存”给定给加法器的构造函数的值:
Adder::Adder(int lhs, int rhs)
: lhs_(lhs), rhs_(rhs) // 1
{}
标记为//1
的行是的语法;它使用参数的值初始化成员变量lhs_
和rhs_
。最后一步,我们在重载集中使用这些变量:
int Adder::add(int lhs, int rhs)
{
return lhs + rhs;
}
int Adder::add(int lhs)
{
return add(lhs, rhs_);
}
int Adder::add()
{
return add(lhs_, rhs_);
}
完整演示:为什么不简单地创建3个类:0个默认值、1个默认值、2个默认值。谢谢!现在我可以把这个应用到更大的程序中:)关于这个问题,我还有其他问题。如果我们在加法器中有N个参数会怎么样?对于此类问题,是否有一些系统/通用的方法?@mimi yes,lookup
std::vector
和参数包。如果您有关于它们的问题,并且这些问题符合SO的主题,请问另一个SO问题。好的,谢谢,这里有关于std::vector
的好提示。我问这个问题只是因为我对此很好奇——如果问题更大,我会问另一个问题。
int add(int lhs, int rhs);
int add(int lhs);
int add();
};
Adder::Adder(int lhs, int rhs)
: lhs_(lhs), rhs_(rhs) // 1
{}
int Adder::add(int lhs, int rhs)
{
return lhs + rhs;
}
int Adder::add(int lhs)
{
return add(lhs, rhs_);
}
int Adder::add()
{
return add(lhs_, rhs_);
}