在构造函数的默认构造对象中未声明变量

马克·阿格尼斯

上面的代码不起作用。实际上,构造函数f的默认构造对象Foo抱怨该值val未在范围中声明。我不明白为什么不声明它。

struct Foo2
{
  Foo2(int val)
  {}
};

struct Foo
{
  Foo(int val, Foo2 f = Foo2(val))
  {}
};

int main()
{
  Foo f(1);
  return 0;
}
来自莫斯科的弗拉德

根据C ++标准(8.3.6默认参数):

9每次调用函数时都会评估默认参数。未指定函数参数的评估顺序。因此,即使不对函数参数进行求,也不得在默认参数中使用该函数的参数在默认参数之前声明的函数的参数在范围内,并且可以隐藏名称空间和类成员名称。

在任何C ++(不仅是C ++ 2014)中,您都可以重载构造函数。例如

struct Foo
{
  Foo(int val )
  { Foo2 f(val); /*...*/ }
  Foo(int val, Foo2 f )
  {}
};

或者,您可以使用委托的构造函数(如果您的编译器支持新的Standard)

struct Foo
{
  Foo(int val ) : Foo( val, Foo2( val ) )
  {}
  Foo(int val, Foo2 f )
  {}
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MarkupExtension声明中的默认构造函数参数

来自分类Dev

声明一个变量以存储仅用dart中特定命名的构造函数构造的对象

来自分类Dev

访问在构造函数中声明的变量

来自分类Dev

声明成员对象而不调用其默认构造函数

来自分类Dev

在C ++中声明const对象需要用户定义的默认构造函数。如果我有一个可变的成员变量,为什么不呢?

来自分类Dev

C ++显式声明在默认构造函数中触发警告

来自分类Dev

Java-我们可以在构造函数中声明对象变量吗?

来自分类Dev

它在C ++标准中的何处声明删除复制构造函数时未生成默认构造函数?

来自分类Dev

如何处理JavaScript中的构造函数中声明的变量?

来自分类Dev

C ++中的构造函数内部的变量声明和赋值

来自分类Dev

如何从方法访问构造函数中声明的变量?

来自分类Dev

Java中的默认构造函数?

来自分类Dev

mariaddb函数中未声明的变量compid

来自分类Dev

在对象/类默认构造函数中干燥样板

来自分类Dev

在对象/类默认构造函数中干燥样板

来自分类Dev

在默认构造函数中声明arr时,未在此范围中声明“ arr”

来自分类Dev

在构造函数中为创建的每个对象更改类变量

来自分类Dev

在构造函数中存根变量?

来自分类Dev

在构造函数中传递对象

来自分类Dev

用Java中的默认构造函数复制构造函数

来自分类Dev

C ++中未知的构造/变量声明

来自分类Dev

在Java构造函数中声明ArrayList

来自分类Dev

C ++中构造函数的多个声明

来自分类Dev

在构造函数angular 2中声明属性

来自分类Dev

在构造函数中声明的属性与原型

来自分类Dev

C ++中构造函数的多个声明

来自分类Dev

在构造函数angular 2中声明属性

来自分类Dev

如何在另一个对象的构造函数中声明和制作对象?

来自分类Dev

如何在另一个对象的构造函数中声明和制作对象?

Related 相关文章

  1. 1

    MarkupExtension声明中的默认构造函数参数

  2. 2

    声明一个变量以存储仅用dart中特定命名的构造函数构造的对象

  3. 3

    访问在构造函数中声明的变量

  4. 4

    声明成员对象而不调用其默认构造函数

  5. 5

    在C ++中声明const对象需要用户定义的默认构造函数。如果我有一个可变的成员变量,为什么不呢?

  6. 6

    C ++显式声明在默认构造函数中触发警告

  7. 7

    Java-我们可以在构造函数中声明对象变量吗?

  8. 8

    它在C ++标准中的何处声明删除复制构造函数时未生成默认构造函数?

  9. 9

    如何处理JavaScript中的构造函数中声明的变量?

  10. 10

    C ++中的构造函数内部的变量声明和赋值

  11. 11

    如何从方法访问构造函数中声明的变量?

  12. 12

    Java中的默认构造函数?

  13. 13

    mariaddb函数中未声明的变量compid

  14. 14

    在对象/类默认构造函数中干燥样板

  15. 15

    在对象/类默认构造函数中干燥样板

  16. 16

    在默认构造函数中声明arr时,未在此范围中声明“ arr”

  17. 17

    在构造函数中为创建的每个对象更改类变量

  18. 18

    在构造函数中存根变量?

  19. 19

    在构造函数中传递对象

  20. 20

    用Java中的默认构造函数复制构造函数

  21. 21

    C ++中未知的构造/变量声明

  22. 22

    在Java构造函数中声明ArrayList

  23. 23

    C ++中构造函数的多个声明

  24. 24

    在构造函数angular 2中声明属性

  25. 25

    在构造函数中声明的属性与原型

  26. 26

    C ++中构造函数的多个声明

  27. 27

    在构造函数angular 2中声明属性

  28. 28

    如何在另一个对象的构造函数中声明和制作对象?

  29. 29

    如何在另一个对象的构造函数中声明和制作对象?

热门标签

归档