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

wyer33

C ++ 11程序

struct Foo {
    Foo(Foo const &) = delete;
};

int main() {
    Foo foo;
}

产生错误

$ g++ -std=c++11 junk.cpp -o junk
junk.cpp: In function 'int main()':
junk.cpp:6:9: error: no matching function for call to 'Foo::Foo()'
junk.cpp:6:9: note: candidate is:
junk.cpp:2:5: note: Foo::Foo(const Foo&) <deleted>
junk.cpp:2:5: note:   candidate expects 1 argument, 0 provided

现在,由于删除了复制构造函数,因此似乎无法生成默认构造函数。我将假设这是预期的行为,但是在C ++标准中,它指定在删除复制构造函数时不应该生成默认构造函数吗?

克里斯

从N3485§12.1[class.ctor] / 5:

如果没有用户声明的类X构造函数,则将不带参数的构造函数隐式声明为默认值(8.4)。

Foo(Foo const &) = delete; 是用户声明的构造函数,因此编译器不会生成任何默认构造函数。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C ++中返回时复制构造函数

来自分类Dev

C ++调用默认构造函数而不是复制构造函数

来自分类Dev

没有默认构造函数的奇怪的C ++复制构造函数

来自分类Dev

C ++复制构造函数和默认构造函数

来自分类Dev

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

来自分类Dev

C ++中的复制构造函数

来自分类Dev

C ++中的复制构造函数

来自分类Dev

用默认构造函数生成的C ++移动构造函数

来自分类Dev

默认构造函数未称为C ++ OOP

来自分类Dev

C ++中的构造函数和复制构造函数行为

来自分类Dev

存在具有默认参数的构造函数时,c ++构造函数中的歧义

来自分类Dev

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

来自分类Dev

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

来自分类Dev

用基类的复制构造函数替换默认的复制构造函数(C ++)

来自分类Dev

复制C#中的多态构造函数

来自分类Dev

链表C ++中的复制构造函数

来自分类Dev

如何在C ++中“默认构造函数”

来自分类Dev

删除默认C ++复制和移动构造函数和赋值运算符的缺点?

来自分类Dev

删除默认C ++复制和移动构造函数和赋值运算符的缺点?

来自分类Dev

Java是否具有默认的复制构造函数(如C ++)?

来自分类Dev

C++ 默认复制构造函数不可行

来自分类Dev

在C#中,对象是否有可能将对自身的引用传递给它在其自己的基本构造函数中创建的子对象的构造函数?

来自分类Dev

在类体之外定义函数时,c ++派生的构造函数-“无默认构造函数”

来自分类Dev

当父类在 C++ 中没有默认构造函数时,如何在继承的类中使用构造函数?

来自分类Dev

C ++结构默认构造函数

来自分类Dev

C ++复制构造函数未调用(编译错误)

来自分类Dev

在C ++中为链表创建复制构造函数/函数

来自分类Dev

C ++:右值引用构造函数和复制删除

来自分类Dev

未调用C ++构造函数

Related 相关文章

  1. 1

    在C ++中返回时复制构造函数

  2. 2

    C ++调用默认构造函数而不是复制构造函数

  3. 3

    没有默认构造函数的奇怪的C ++复制构造函数

  4. 4

    C ++复制构造函数和默认构造函数

  5. 5

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

  6. 6

    C ++中的复制构造函数

  7. 7

    C ++中的复制构造函数

  8. 8

    用默认构造函数生成的C ++移动构造函数

  9. 9

    默认构造函数未称为C ++ OOP

  10. 10

    C ++中的构造函数和复制构造函数行为

  11. 11

    存在具有默认参数的构造函数时,c ++构造函数中的歧义

  12. 12

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

  13. 13

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

  14. 14

    用基类的复制构造函数替换默认的复制构造函数(C ++)

  15. 15

    复制C#中的多态构造函数

  16. 16

    链表C ++中的复制构造函数

  17. 17

    如何在C ++中“默认构造函数”

  18. 18

    删除默认C ++复制和移动构造函数和赋值运算符的缺点?

  19. 19

    删除默认C ++复制和移动构造函数和赋值运算符的缺点?

  20. 20

    Java是否具有默认的复制构造函数(如C ++)?

  21. 21

    C++ 默认复制构造函数不可行

  22. 22

    在C#中,对象是否有可能将对自身的引用传递给它在其自己的基本构造函数中创建的子对象的构造函数?

  23. 23

    在类体之外定义函数时,c ++派生的构造函数-“无默认构造函数”

  24. 24

    当父类在 C++ 中没有默认构造函数时,如何在继承的类中使用构造函数?

  25. 25

    C ++结构默认构造函数

  26. 26

    C ++复制构造函数未调用(编译错误)

  27. 27

    在C ++中为链表创建复制构造函数/函数

  28. 28

    C ++:右值引用构造函数和复制删除

  29. 29

    未调用C ++构造函数

热门标签

归档