这样的c++语法ValueType capacity{};如何解释?

「已注销」 2019-06-12 12:05:32
某开源项目有这样的代码:
using NodeType = unsigned int;
using ValueType = float;

using edge_descriptor = typename boost::compressed_sparse_row_graph<
boost::directedS,
boost::no_property, // VertexProperty
boost::no_property, // EdgeProperty
unsigned int, // Vertex
unsigned int // EdgeIndex
>::edge_descriptor;

struct Edge {

ValueType capacity{};
ValueType residual{};
edge_descriptor reverse{};
};

edge_descriptor reverse{};后面的{}是干嘛的?和edge_descriptor reverse;有何区别?
我用VS2013前者编译不过,提示编译器内部错误。
谢谢!
...全文
61 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdghchj 2019-06-12
  • 打赏
  • 举报
回复
大括号表示初始化,C/C++语言里早就有这种语法,结构体、数组初始化很常见,C++11开始又做了扩展补充,支持一些自定义类的初始化。对于内置基本类型char、int、float、double等等,在栈上申请时,如果不初始化就是个脏值,有大括号就是以0值初始化,也就是说int a{ }跟int a = 0等价。如果是class,则大括号基本与小括号一样的,匹配调用class对应数量参数的构造函数,当然它比小括号多一个功能就是可以匹配调用以std::initializer_list模板为参数的构造函数。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧