使用类型推断声明变量是否与"classical way"变量名称后用括号初始化变量一样有效?
Is declaring variable with type inference as effective as "classical way" of initializing variable with parenthesis after variable name?
能够轻松地在我的代码库中短信搜索某些对象的构造函数。这是bellow的模式。而不是古典:
-
Object val( a, b );
在任何地方都可以使用:
-
auto val = Object( a, b );
这样,我可以使用简单的文本搜索"Object("
并获取我正在调用Object
构造函数的列表。它也不是句法的模棱两可,因此更容易制作简单的工具来自动化某些代码转换。它也优雅地避免了"最烦人的解析"问题。
我唯一关心的是可能对性能的影响。案例2)与案例1)一样快吗?(如果我们可以假设Object
已启用了正确定义的移动构造函数和移动分配运算符和基本编译器优化。)
pre c 17,尽管不太可能,您可能会因额外的副本或移动而获得绩效罚款。即使C 98也允许实现此类副本,即使它们会产生副作用,而且几乎所有编译器已经实施了很长时间的优化,尤其是在优化的构建中。
帖子C -17,保证复制省略。您甚至不需要拥有副本或移动构造函数才能工作,因此您不应该看到任何区别。
相关文章:
- 为什么C++有不同的变量初始化方式?
- 静态 constexpr 成员变量初始化
- C++不同的变量初始化
- 全局和局部变量初始化与 constexpr 的差异背后的基本原理
- 是变量初始化失败吗?
- 视觉C++:在 DLL 加载期间,全局变量初始化顺序是否具有确定性?
- 类静态变量初始化顺序
- 使用 constinit 变量初始化 constexpr 变量
- 是否可以在不修改父类的情况下将成员变量初始化推迟到继承的类?
- 使用全局变量初始化不同编译单元中的其他全局变量
- 使用默认构造函数引用成员变量初始化错误
- 宏的 if 语句中的变量初始化
- 不稳定的C :每行适应性变化多变量初始化
- 同一函数中的静态函数变量初始化顺序
- C 语言中的静态变量初始化
- 错误:调用'begin(long double [nPoints])'没有匹配函数;使用硬编码的 int 与整数变量初始化向量
- 类POD成员变量初始化
- 尝试捕获类变量初始化的范围
- 共享库中 __attribute__((构造函数)) 的全局/静态变量初始化问题
- 多变量初始化编译器支持