0

我正在阅读这篇使用 C++ 构造函数的默认参数的帖子, 并且我有一个关于在构造函数中放置可选参数的问题。例如:

Class TestCode {
private:
      int _length;
      int _width;
      int _height;
public:
     TestCode(int length = 5, int width, int height=3):
             _length(length), _width(width),_height(height){

} } ;

// Using the class

  TestCode testRectangle(2);
  TestCode testRectangle2(2,3);

testRectangle 对象是用宽度 2 和默认长度和高度构造的吗?在 testRectangle2 的情况下会发生什么?参数分配是否正确。鉴于这种歧义,应该只是在构造函数的末尾包含所有选项参数吗?

4

3 回答 3

4

是的,您必须在声明的末尾包含所有可选参数。你的例子:

TestCode(int length = 5, int width, int height=3)

不会编译。

于 2013-05-30T19:08:09.567 回答
2

事实上,在 C++ 中,您必须让所有默认参数都排在所有其他非默认参数之后。

于 2013-05-30T19:09:49.007 回答
1

如果您将它们放在开头,您的代码甚至可以编译吗?阿法克不应该。

是的,最好将它们放在最后,在非可选参数之后。如果没有令人信服的理由不这样做,将它们按使用频率排序也是一个好主意。

于 2013-05-30T19:09:30.067 回答