C++类名后面跟大括号和跟小括号的区别

在 C++ 中,类名后面跟着大括号 {} 和小括号 () 有不同的含义和作用。

  1. 大括号 {}

    • 初始化对象:当在声明类对象时使用大括号 {} 时,这表示对对象进行初始化。这种方式也称为列表初始化或者统一初始化。
    • 示例
      MyClass obj{}; // 使用大括号初始化 MyClass 类的对象 obj
      
    • 初始化方式:大括号初始化有不同的行为,对于类来说可能会触发不同的构造函数,包括默认构造函数、带参数的构造函数或者其他初始化方式,取决于类的构造函数重载情况。
  2. 小括号 ()

    • 创建对象:在 C++ 中,类名后跟小括号是创建一个对象的方式,表示调用类的构造函数来生成一个新的对象。
    • 示例
      MyClass obj(); // 使用小括号创建 MyClass 类的对象 obj
      
    • 注意事项:这里需要小心,因为在这种情况下,编译器会将 obj 视为一个函数原型而不是一个对象的声明,这种情况通常被称为 “most vexing parse”。为了避免这种歧义,可以使用 = 或直接省略括号来初始化对象:
      MyClass obj{}; // 使用大括号进行初始化
      MyClass obj; // 或者直接省略括号
      

总体而言,大括号 {} 用于对象初始化,而小括号 () 在某些情况下可能导致代码的二义性,因此在创建对象时,建议使用大括号进行初始化或直接省略括号。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值