C ++对象实例化-使用空括号实例化对象时调用哪个构造函数

曼苏尔·艾哈迈德·梅蒙

我对用于实例化对象的不同语法感到困惑。

这是我的课:

class Object
{

private:

    int field = 0;

public:

    Object() = default; // Just for testing.
    ~Object() = default; // Just for testing.

    Object( const Object& obj ) = default; // Just for testing.

};

这是主要方法:

int main()
{
    Object b(); // ???
    Object c{}; // default
    Object d = Object(); // default
    Object e = Object{}; // default
    Object f ( Object() ); // ???
    Object g { Object() }; // default
    Object a; // default but avoid
    Object h ( Object() ); // ???
    Object i { Object{} }; // default
    Object j = i; // copy
    Object k( j ); // copy
    Object l{ k }; // copy
    Object m = { l }; // copy
    Object n = ( m ); // copy
    auto o = Object(); // default
    auto p = Object{}; // default
    return 0;
}

我的标记为default没问题copy我只想知道,哪个构造函数是用它来调用的,???因为默认构造函数没有被调用。()可以看出,它初始化有关。

我知道这可能并不重要,但我对此表示怀疑。

谁能帮忙!

songyuanyao

这三个声明都是函数声明,而不是变量定义(如您所料)。

Object b();声明一个名为的函数b,该函数不执行任何操作并返回Object

Object f ( Object() );声明一个名为的函数f,该函数采用一个未命名的参数,其类型为返回且不Object带任何值(即Object()的函数,然后返回Object同样适用于Object h ( Object() );

作为解决方法,Object b();您可以

Object b;
Object b{}; // since C++11

为了Object f ( Object() );你可以

Object f ( ( Object() ) );
Object f ( Object{} );     // since C++11
Object f { Object{} };     // since C++11
Object f { Object() };     // since C++11

有关更多信息,请参见最烦人的解析

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

模板类的实例化对象上的C ++模板元函数

来自分类Dev

如何防止在C#中实例化对象

来自分类Dev

使用C ++中的合成进行对象实例化计算

来自分类Dev

再谈开关内部的对象实例化(C ++)

来自分类Dev

用不同的对象实例化c ++ Vector

来自分类Dev

C ++实例化“隐式”类对象

来自分类Dev

实例化和删除对象C ++

来自分类Dev

实例化对象的堆栈分配C ++

来自分类Dev

在不调用C ++构造函数的情况下实例化对象

来自分类Dev

在Robot Framework中实例化C#对象

来自分类Dev

构造函数中的实例化对象时的C ++类成员作用域

来自分类Dev

用于检查哪个对象实例化函数调用的复杂测试

来自分类Dev

模板类的实例化对象上的C ++模板元函数

来自分类Dev

实例化对象时如何调用父构造函数?

来自分类Dev

实例化类对象的客观C错误

来自分类Dev

C ++:使用友善类限制对象实例化

来自分类Dev

C#中的对象实例化之间的区别:将对象存储在引用中与直接调用方法

来自分类Dev

使用C ++中的合成进行对象实例化计算

来自分类Dev

从类构造函数实例化对象的集合

来自分类Dev

C ++-如何在另一个类中使用私有构造函数实例化对象

来自分类Dev

计算使用LINQ函数实例化的C#对象中的天数

来自分类Dev

实例化和删除对象C ++

来自分类Dev

C ++,使用模板实例化存储对象实例的通用节点

来自分类Dev

使用构造函数参数实例化类对象与不使用参数C *实例*运算符之间的区别

来自分类Dev

在不调用C ++构造函数的情况下实例化对象

来自分类Dev

c ++调用模板构造函数实例化

来自分类Dev

未知的 c++ 对象实例化语法

来自分类Dev

C++ 对象实例化内存位置

来自分类Dev

对象实例化调用构造函数太多次

Related 相关文章

  1. 1

    模板类的实例化对象上的C ++模板元函数

  2. 2

    如何防止在C#中实例化对象

  3. 3

    使用C ++中的合成进行对象实例化计算

  4. 4

    再谈开关内部的对象实例化(C ++)

  5. 5

    用不同的对象实例化c ++ Vector

  6. 6

    C ++实例化“隐式”类对象

  7. 7

    实例化和删除对象C ++

  8. 8

    实例化对象的堆栈分配C ++

  9. 9

    在不调用C ++构造函数的情况下实例化对象

  10. 10

    在Robot Framework中实例化C#对象

  11. 11

    构造函数中的实例化对象时的C ++类成员作用域

  12. 12

    用于检查哪个对象实例化函数调用的复杂测试

  13. 13

    模板类的实例化对象上的C ++模板元函数

  14. 14

    实例化对象时如何调用父构造函数?

  15. 15

    实例化类对象的客观C错误

  16. 16

    C ++:使用友善类限制对象实例化

  17. 17

    C#中的对象实例化之间的区别:将对象存储在引用中与直接调用方法

  18. 18

    使用C ++中的合成进行对象实例化计算

  19. 19

    从类构造函数实例化对象的集合

  20. 20

    C ++-如何在另一个类中使用私有构造函数实例化对象

  21. 21

    计算使用LINQ函数实例化的C#对象中的天数

  22. 22

    实例化和删除对象C ++

  23. 23

    C ++,使用模板实例化存储对象实例的通用节点

  24. 24

    使用构造函数参数实例化类对象与不使用参数C *实例*运算符之间的区别

  25. 25

    在不调用C ++构造函数的情况下实例化对象

  26. 26

    c ++调用模板构造函数实例化

  27. 27

    未知的 c++ 对象实例化语法

  28. 28

    C++ 对象实例化内存位置

  29. 29

    对象实例化调用构造函数太多次

热门标签

归档